在运行阶段 - angularjs中设置一个常量的承诺

时间:2016-03-02 12:35:38

标签: javascript angularjs

是否可以在运行阶段设置常量?我需要这个值集才能使我的服务正常工作,这就是我的情况。

 angular
 .constant('MYCONSTANT', {})
 .factory('myFactory', function($http) {
     return {
         getSomething : getSomething
     };

     function getSomething() {
         return $http.get('myurl');
     }
 })
 .run(function(myFactory, MYCONSTANT) {
     myFactory.getSomething().then(function(response) {
         MYCONSTANT = response;
     });
 });

如果我在运行阶段控制记录常量的值,它具有正确的值,但是,如果我在调用它时将其检入任何其他服务,则它是一个空对象。

我不想依赖ui-router公开的解析方法。

1 个答案:

答案 0 :(得分:4)

      MYCONSTANT = response;

只为本地MYCONSTANT变量分配一个新值,在这种情况下原始对象引用将丢失。要按预期工作,它应该是

      angular.forEach(MYCONSTANT, function (val, key) {
        // if MYCONSTANT is non-empty
        delete MYCONSTANT[key];
      });
      angular.extend(MYCONSTANT, response);