初始化AngularJS服务工厂样式
发布时间:2020-12-17 17:19:48 所属栏目:安全 来源:网络整理
导读:我有一个通过REST检索数据的服务.我想将结果数据存储在服务级别变量中,以便在多个控制器中使用.当我将所有REST逻辑直接放入控制器时,一切正常,但是当我尝试将数据的检索/存储移动到服务中时,控制器在数据恢复时不会被更新.我已经尝试了很多不同的方法来维护
我有一个通过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','$timeout','RESTService',function ($http,$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> 解决方法
我会用诺言工厂写它:
myApp.factory('SiteConfigService','$q' function ($http,RESTService,$q) { var siteConfig = {} ; RESTService.get("https://domain/incentiveconfig",function(data) { siteConfig = data; }); // or just // var siteConfig = RESTService.get("https://domain/incentiveconfig"); return { getConfig:function () { var deferred = $q.defer(); deferred.resolve(siteConfig); return deferred.promise; } }; } ]); 控制器端 SiteConfigService.getConfig() .then(function (result) { $scope.site = result; },function (result) { alert("Error: No data returned"); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |