AngularJS更新范围$ q

时间:2013-08-30 10:59:18

标签: javascript angularjs

所以最近我一直在更新如下所示的内容:

$scope.arrayOfThings = [];

function setArrayOfThings() {
     thingsService.get().then(function (things) {
         $scope.arrayOfThings = things;
     });
}

$scope.$on('arrayOfThings.add', setArrayOfThings);

看起来更像这样(使用鲜为人知的承诺集成到绑定中......):

$scope.arrayOfThings = thingsService.get();

但是当从另一个arrayOfThings更改集合时,如何强制$scope更新(或重新解析?)?

2 个答案:

答案 0 :(得分:0)

arrayOfThings只能在子作用域内看到,因此子作用域中arrayOfThings的任何更改都将保持数据绑定。数据绑定必须由$ scope手动解析。如果从事件(DOM事件,$ broadcast等)更改了arrayOfThing,则应用$ apply

答案 1 :(得分:0)

您需要监视要通知更改的控制器中的服务调用thingsService.get。像这样:

$scope.$watch(thingsService.get, function(newVal, oldVal){
  $scope.arrayOfThings2 = newVal;  
} );

这假设您正在将该服务注入新控制器。