我如何要求AngularJS重新计算复杂函数的值?

时间:2015-07-27 12:40:20

标签: angularjs underscore.js

我有一个AngularJS控制器,它具有以下功能:

$scope.getExampleValue = function(exampleId) {
  // calculate a value using underscore's _.where()
  // clause against two JSON arrays on the $scope
  // and the exampleId parameter passed in

  return computedValue;
}

函数的参数(exampleId)是从服务器呈现的,因此生成的HTML如下所示:

<div ng-controller="ExampleController">
  ...
  <span>{{ getExampleValue(3) }}</span>
  <span>{{ getExampleValue(4) }}</span>
  <span>{{ getExampleValue(5) }}</span>
  ...
</div>

我遇到的问题是,当函数中使用的JSON数组发生变化时,AngularJS不知道再次调用getExampleValue():它们是2个简单的JSON数组,新的JSON项可以是添加或删除,或者可以修改任一阵列中现有JSON项的属性,这会影响结果。

我已经查看了$scope.watch()$scope.watchCollection(),但我不确定如何使用它们而不更改我的方法来绑定已经计算的值而不是我喜欢的函数

基本上我认为我在询问如何通知AngularJS复杂的绑定值已经改变,然后我可以将该通知包装在$scope.watch() ..

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在寻找$scope.$apply

当您异步更改JSON时,请运行:

$scope.$apply(function () {
    // update the properties on $scope
});