如何在范围之外更新对象时如何更新angularJS中的视图

时间:2013-01-28 10:51:38

标签: javascript html angularjs

我在AngularJS范围之外有一个类似于:

的对象
obj = { isBig : true, name: "John" ... }

它有很多参数,它是在角度范围之外创建的,它在angularJS之外更新(例如 - 通过我用jQuery调用的ajax调用)。

在我的控制器内写道:

$scope.obj = obj;

如何创建一个侦听任何对象更改并更新视图的事件?所以事件就是对象的变化

具体来说,我有一个名为obj.isAjaxCallFailed = true/false的参数,我在视图中使用<div ng-show="obj.isAjaxCallFailed"></div>

它不起作用。我尝试使用$on,我无法想办法。

1 个答案:

答案 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'])应该设置在回调之外的某个地方(不需要一直执行它)。