REST 経由でデータを取得するサービスがあります。結果のデータをサービス レベル変数に保存して、複数のコントローラーで使用したいと考えています。すべての REST ロジックをコントローラーに直接配置すると、すべて正常に動作しますが、データの取得/保存をサービスに移動しようとすると、データが戻ってきたときにコントローラーが更新されません。サービスとコントローラーの間のバインディングを維持するために、さまざまな方法を試しました。
コントローラ:
myApp.controller('SiteConfigCtrl', ['$scope', '$rootScope', '$route', 'SiteConfigService',
function ($scope, $rootScope, $route, SiteConfigService) {
$scope.init = function() {
console.log("SiteConfigCtrl init");
$scope.site = SiteConfigService.getConfig();
}
}
]);
サービス:
myApp.factory('SiteConfigService', ['$http', '$rootScope', '$timeout', 'RESTService',
function ($http, $rootScope, $timeout, RESTService) {
var siteConfig = {} ;
RESTService.get("https://domain/incentiveconfig", function(data) {
siteConfig = data;
});
return {
getConfig:function () {
console.debug("SiteConfigService getConfig:");
console.debug(siteConfig);
return siteConfig;
}
};
}
]);
意見:
<div class="span4" ng-controller="SiteConfigCtrl">
<header>
<h2>
{{site.title}}
</h2>
</header>