Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何绑定AngularJS中函数的结果_Javascript_Angularjs_Angularjs Scope_Angularjs Service - Fatal编程技术网

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

Javascript 如何绑定AngularJS中函数的结果,javascript,angularjs,angularjs-scope,angularjs-service,Javascript,Angularjs,Angularjs Scope,Angularjs Service,我有一系列的项目,我想在几个控制器之间跟踪它们。所以,为了做到这一点,我做了一个服务 该服务目前是基本服务,只需将项目添加到数组中,即可获得计数: angular.module('myapp.itemManagementService', []) .factory('myappItemSrv', [function () { var allItems = []; return { addItem: function (item) {

我有一系列的项目,我想在几个控制器之间跟踪它们。所以,为了做到这一点,我做了一个服务

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

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
getItemCount()
在加载控制器时调用一次。一种方法是把它放在范围内

$scope.getItemCount = myappItemSrv.getItemCount;
并更改绑定

{{ getItemCount() }}