0

我有這個控制器與我的HTML代碼中的指令。該指令具有我希望從父控制器訪問並顯示在html中的範圍值。希望我的示例代碼能夠給你一個我想要實現的簡單概述。angularjs控制器訪問指令範圍值

我知道這項工作使用$ rootScope.showvalue ='傳遞文本';在指導作品中,但不知道這是否是最好的解決方案。

app.directive('customdir', [function() { 
    return { 
    restrict: "E", 
    scope:  {  
     showvalue: "=" 
    }, 
    link: function(scope, el, attrs) { 
     scope.showvalue = 'pass text'; 

    } 
    }; 
}]); 

app.controller('mycontroller', function($scope) { 
    alert($scope.showvalue); 
}); 



<html> 
    <div ng-controller="mycontroller"> 
     <custom-dir></custom-dir> 

      /* Show scope value from custom dir */ 

      {{showvalue}} 
    </div> 
    </html> 

回答

0

既然你綁定指令的分離scope屬性通過showvalue雙向綁定,你可以簡單的通過作爲一個屬性

<customdir showvalue="showvalue"></customdir> 

<p>{{showvalue}}</p> 

演示〜http://plnkr.co/edit/W5k0hgDElklseOvjwRsS?p=preview


父作用域屬性

如果您希望HTML爲<custom-dir>,則需要更改e您的指令'customDir'

+0

由於某種原因,只有$ rootScope.showvalue ='pass text';作品。也許是因爲控制器和指令是在兩個單獨的文件 – icode

+0

你看看演示?它顯然有效。分離文件沒有區別 – Phil

+0

是的,你的演示很好的清晰的例子。只是我的代碼不工作。我想也許控制器是如何設置的。 – icode

0
  1. 您可以通過屬性將「showvalue」傳遞給指令。
  2. 您可以通過指令作用域的$ parent屬性來設置值。例如。範圍。$ parent.showvalue ='傳遞文字';
  3. 您可以使用emit事件將數據從子(指令)傳遞給父(控制器)。
  4. 您可以使用共享作用域直接將值設置爲控制器作用域。 (不要在指令中指定範圍屬性)