我有一系列要跨多个控制器跟踪的项目。因此,为此,我提供了服务。
该服务目前是基本的,只需将项目添加到数组中即可获得计数:
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() }}