我有一系列要跨多个控制器跟踪的项目。因此,为此,我提供了服务。

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

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}}


仅当我离开页面然后返回时,这种情况才会改变

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

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

最佳答案

加载控制器后,将一次调用getItemCount()。一种方法是将其放在示波器上...

$scope.getItemCount = myappItemSrv.getItemCount;


并更改绑定...

{{ getItemCount() }}

07-23 21:57
查看更多