Angular $watch没有触发

Angular $watch not triggering

本文关键字:watch Angular      更新时间:2023-09-26

我们有一个控制器和一个指令。在控制器的$作用域中有一个包含一些对象的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()抛出错误

我做错了什么?由于

你正在观察标题,但那不在你的范围内,你试图观察的范围是模块。标题或简单的模块

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