Angular $ watch不会触发

时间:2014-07-11 14:43:46

标签: javascript angularjs angularjs-directive angularjs-scope

我们有一个控制器和一个指令。在控制器的$ scope中,有modules数组,其中包含一些对象。

$scope.modules = [
   {title: 'demo'},
   {title: 'demo 2'},
   {title: 'demo 3'},
];

我正在创建这样的指令:

var popup = angular.element('<module-popup module="module"></module-popup>');
$compile(popup)($scope);

听取控制器的$ scope更改:

$scope.$watch('title', function() {
    console.log('Controller changed');
}, true);

当我在控制台中看到页面加载时:Controller changed

但是当我试图手动更改这些值时 - 在控制台中没有记录但是在屏幕上我看到了正确的值。

<h2>{{ module.title }}</h2>

$scope.$apply()会抛出错误

我做错了什么?感谢

1 个答案:

答案 0 :(得分:3)

您正在观看标题,但这不在您的范围内,您尝试观看的范围是modules.title或只是模块

  $scope.$watch('modules', function() {
        console.log('Controller changed');
    }, true);