私はAngularJSを始めたばかりで、サービスの作成を理解しようとしています。thisとthisから、私の理解では、変数への変更が Angular 内にある限り、それらを $watch する必要はありません。hereからコードをコピーし、最初のサービスが機能するかどうかを確認するために修正しました。
myApp.factory('ListService', function() {
var ListService = {};
var list = ['a', 'b', 'c'];
ListService.addItem = function(item) { list.push(item); }
ListService.size = function() { return list.length; }
ListService.size1 = list.length;
return ListService;
});
function Ctrl1($scope, ListService) {
$scope.message = ListService.size();
$scope.addItem = function(){
ListService.addItem('d');
console.log("size() is " + ListService.size());
console.log("size1 is " + ListService.size1);
}
}
function Ctrl2($scope, ListService) {
$scope.message = ListService.size1;
}
htmlは単純です:
<div ng-controller="Ctrl1"> Count is: {{ message }}
<input type="button" ng-click="addItem">
</div>
<div ng-controller="Ctrl2"> Count is: {{ message }}
</div>
ボタンをクリックすると、コンソール ログに正しいカウントが表示されますが、「メッセージ」は変わりません。元のコードは考案されたものであり、サービスを使用してコントローラー間でコードを共有できることを示すことを目的としていました。
私の質問は、なぜこれが機能しないのですか? 非常に単純なことを見逃していたら申し訳ありません。私は初心者で、まだコツをつかもうとしています。