是否可以在运行阶段设置常量?我需要这个值集才能使我的服务正常工作,这就是我的情况。
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公开的解析方法。
答案 0 :(得分:4)
MYCONSTANT = response;
只为本地MYCONSTANT
变量分配一个新值,在这种情况下原始对象引用将丢失。要按预期工作,它应该是
angular.forEach(MYCONSTANT, function (val, key) {
// if MYCONSTANT is non-empty
delete MYCONSTANT[key];
});
angular.extend(MYCONSTANT, response);