是否可以在运行阶段设置常量?我需要设置这个值才能让我的服务正常工作,这就是我的情况。
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/