我们有一个控制器和一个指令。在控制器的$ 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()
会抛出错误
我做错了什么?感谢
答案 0 :(得分:3)
您正在观看标题,但这不在您的范围内,您尝试观看的范围是modules.title或只是模块
$scope.$watch('modules', function() {
console.log('Controller changed');
}, true);