angularjs控制器访问指令范围值

时间:2016-08-12 00:21:34

标签: angularjs angularjs-directive angularjs-scope angularjs-controller

我的html代码中有这个带有指令的控制器。该指令具有我想从父控制器访问并在html中显示的范围值。希望我的示例代码能够简单概述我正在尝试实现的目标。

我知道这项工作使用$ rootScope.showvalue ='pass text';在指令中工作,但不知道这是否是最佳解决方案。

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>

2 个答案:

答案 0 :(得分:0)

由于您通过双向绑定绑定了指令的隔离范围showvalue属性,因此您可以简单地将父范围属性作为属性传递

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

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

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

如果您希望HTML为<custom-dir>,则需要将指令重命名为'customDir'

答案 1 :(得分:0)

  1. 你可以通过&#34; showvalue&#34;通过属性指令。
  2. 您可以通过指令范围的$ parent属性设置值。例如。范围。$ parent.showvalue =&#39;传递文字&#39;;
  3. 您可以使用emit事件将数据从子(指令)传递给父(控制器)。
  4. 您可以使用共享范围直接将值设置为控制器范围。 (不要在指令中指定scope属性)