我在AngularJS范围之外有一个类似于:
的对象obj = { isBig : true, name: "John" ... }
它有很多参数,它是在角度范围之外创建的,它在angularJS之外更新(例如 - 通过我用jQuery调用的ajax调用)。
在我的控制器内写道:$scope.obj = obj;
如何创建一个侦听任何对象更改并更新视图的事件?所以事件就是对象的变化
具体来说,我有一个名为obj.isAjaxCallFailed = true/false
的参数,我在视图中使用<div ng-show="obj.isAjaxCallFailed"></div>
它不起作用。我尝试使用$on
,我无法想办法。
答案 0 :(得分:1)
使用$watch()
上的obj
来收听更改(在控制器中):
$scope.$watch(function() {
return obj;
}, function(value) {
if(value) {
$scope.obj = obj;
}
}, true);
在代码中您创建或更新obj
的位置,使用$rootScope.$apply()
启动手表:
function someCallbackOutsideAngular(data) {
var $rootScope = angular.injector(['ng']).get('$rootScope');
$rootScope.$apply(function() {
obj.someKey = data.someValue;
});
}
注意:angular.injector(['ng'])
应该设置在回调之外的某个地方(不需要一直执行它)。