<div>
独自のコントローラーを備えた2つがあります。最初の 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
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
};
});
これは私の 2 番目のコントローラーであり、それに関連付けられたサービスです。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 already in progress エラーが発生します。
実行するとconsole.log()
、各サービスの適切な関数が呼び出されていることがわかりますが、リストは更新されていません。
リストを更新するにはどうすればよいですか?