私の最高レベルのスコープに座って、ユーザー状態などの変数を保持できるサービスを作成する方法を見つけようとしています。AngularJsサービスバインディングが更新されない
今、私は数字を結合する簡単な例を作成しようとしています。しかし、私の角を強制的に動かさない限り、UI層は決して更新されません。
getNumber()という行を削除すると、htmlの番号が更新されないことがわかります。私は$ applyを呼び出すことを試みました、そして、それは私に1つが既に効力を発しているというエラーを与えます。
コード:
$scope.update = function() {
SampleService.update();
//Forcing the number to be updated by asking the service to return it
$scope.number = SampleService.getNumber();
};
//Why doesn't this force $scope.number to change as SampleServce.number changes?
$scope.number = SampleService.number;
サービス:
(function() {
'use strict';
angular
.module('Services')
.service('SampleService', SampleService);
SampleService.$inject = ['$http'];
function SampleService($http) {
var Service = {
number: 0
};
Service.update = function()
{
Service.number += 1;
};
Service.getNumber = function()
{
return Service.number;
};
return Service;
}
})();
私はこれを理解しましたが、$ scope.service = SampleServiceを保存するのではなく、SampleServiceからServiceオブジェクトを返す$ scope.State = SampleService.getData()を実行します。私たちの2つの似ていますが異なる方法には何らかの利点や欠点がありますか? –
直接に設定し、 'getData()'を使用する唯一の違いは、 'getData()'関数を使うことによってサービスが何も返す必要がないことです。 – Claies
この質問とコメントにお答えいただき、ありがとうございます。私は自分のデータを期待していることを文字通り知ることができる個人的な理由から、getDataアプローチが好きです。 –