我有两个<div>
带有自己的控制器。第一个 div 有一个ng-model="listEntries"
. listEntries
我在 this<div>
的控制器中初始化。
app.controller('firstController', function($scope,serviceForFirst){
serviceForFirst.init();
serviceForFirst.getList($scope);
});
html
<div ng-controller="firstController">
<ul>
<li ng-repeat="each in listEntries">
{{each.name}}
</li>
<ul>
</div>
我将 传递$scope
给getList()
并将$scope.listEntries
值设置为serviceForFirst
。然后我使用listEntries
as ng-model
。
app.service('serviceForFirst',function(){
var list=[];
var init=function(){
list = [{....}];
};
var getList=function($scope){
$scope.listEntries = list;
};
var update=function(newEntity){
list.push(newEntity);
};
return{
init:init,
getList:getList,
update:update
};
});
这是我的第二个控制器和与之关联的服务。我打算在listAll
每次调用addNew()
. 这就是我正在尝试的方式。
app.controller('secondController', function($scope,serviceForSecond){
serviceForSecond.init();
$scope.addNew=function(newEntity){
serviceForSecond.addNew(newEntity);
};
});
app.service('serviceForSecond',function(serviceForFirst){
var entities=[];
var init=function(){
entities=[{....}];
};
var addNew=function(newEntity){
entities.push(newEntity);
serviceForFirst.update(newEntity);
return{
init:init,
addNew:addNew
};
});
用于此的 HTML<div>
<div ng-controller="secondController">
....
<input type="text" ng-model="newName"/>
<button ng-click="addNew(newName)"/>
....
</div>
但是该列表没有在第一个更新<div>
。$scope.$apply()
如果我在getList()
设置之前尝试做,$scope.listEntries
那么我会得到 $digest 已经在进行中的错误。
当我这样做时console.log()
,我看到每个服务中的适当函数都被调用但列表没有被更新。
我应该如何更新列表?