指令在另一个指令内。控制器无法观看

时间:2013-12-02 15:25:16

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

我有2个简单的指令......

父指令

.directive('modal', [function () {
return {
  replace: true,
  scope: {
     /* attributes */
  },
  templateUrl: 'modal.tpl.html',
  transclude: true,
  link: function (scope) {
    /* code */
  }
};

子指令

.directive('keypad', function () {
'use strict';

return {
  templateUrl: 'keypad.tpl.html',
  scope: {
      value: '=',
  },

  link: function (scope, element, attrs) {
    /* code */
  }
};

最后控制器

.controller('ctrl', ['$scope', '$timeout', function ($scope, $timeout) {
    $scope.$watch('howMuch', function(){
        console.log('wont work ;-(');
    });
}

我的模板如下所示:

<div modal>
    <div keypad class="keypad" value="howMuch"></div>
</div>

知道为什么child指令不能改变控制器上的howMuch值吗? 相同的代码,但没有父指令工作PERFECT。

1 个答案:

答案 0 :(得分:0)

父指令具有隔离范围。您没有显示范围属性,但需要通过隔离范围中的属性访问howMuch,以便更新控制器范围内的值。