如何绑定到AngularJS中的函数结果

时间:2014-07-28 21:10:26

标签: javascript angularjs angularjs-scope angularjs-service

我有一系列项目,我想跟踪几个控制器。所以,为此,我提供了一项服务。

该服务现在是基本的,只需将项目添加到数组中即可获得计数:

angular.module('myapp.itemManagementService', [])
  .factory('myappItemSrv', [function () {
      var allItems = [];

      return {
          addItem: function (item) {
              allItems.push(item);
          },
          getItemCount: function () {
              return allItems.length;
          }
      };
  } ])
;

在我的控制器中,我有一个调用addItem函数的按钮,它工作正常,但我不知道如何绑定getItemCount,以便每次添加项目时视图都会自动更新

在我的控制器中,我有这个:

$scope.count = myappItemSrv.getItemCount();

然后在视图中

{{count}}

这只会在我离开页面然后返回

时发生变化

我意识到我正在返回一个函数的值并且不会绑定,但我不知道如何进行此自动更新。我尝试在$scope.$apply调用中包含对addItem的调用,但我得到的错误是:

Error: [$rootScope:inprog] $apply already in progress

1 个答案:

答案 0 :(得分:1)

加载控制器时,将调用

getItemCount()一次。一种方法是将其放在范围内......

$scope.getItemCount = myappItemSrv.getItemCount;

并更改绑定......

{{ getItemCount() }}