我的指令看起来像这样:
directive('parcelsCarousel',function () {
return {
restrict:'E',
replace:true,
transclude:true,
templateUrl:'/partials/parcels-carousel.html',
link:function (scope, element, attrs) {
scope.$watch('favoriteParcelsList', function (favoriteParcelsList) {
if (scope.favoriteParcelsList != undefined)
console.log(scope.favoriteParcelsList.length)
});
}
}
});
我从控制器将项目推送到favoriteParcelsList
,但$ watch不会运行。
我能以错误的方式做什么?我确信我错过了一些小东西,因为我有一些其他类似结构的指令,它们工作正常。
答案 0 :(得分:2)
查看更多代码(理想情况下是直播)可以理所当然地说,但我怀疑您想要向favoriteParcelsList
添加元素并让AngularJS获取这些更改。如果需要,则需要注意默认情况下$watch
跟踪对象的身份。如果您想跟踪更复杂对象的内容,则需要使用深度监视。
您可以通过向$watch
方法提供第三个布尔参数来指示AngularJS深入监视更改(最后注意 true ):
scope.$watch('favoriteParcelsList', function (favoriteParcelsList) {
if (scope.favoriteParcelsList != undefined)
console.log(scope.favoriteParcelsList.length)
}, true);