加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

初始化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");
                    });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读