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

 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 公开的解析方法。

最佳答案

      MYCONSTANT = response;

只是为本地 MYCONSTANT 变量分配一个新值,在这种情况下原始对象引用丢失。要按预期工作,它应该是
      angular.forEach(MYCONSTANT, function (val, key) {
        // if MYCONSTANT is non-empty
        delete MYCONSTANT[key];
      });
      angular.extend(MYCONSTANT, response);

关于javascript - 在运行阶段通过 Promise 设置常量 - angularjs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35747425/

10-12 18:46