【发布时间】:2016-02-03 12:48:18
【问题描述】:
标题的描述性不如预期,但我没有找到更好的。
所以在我的 AngularJS 应用程序中,我有一个设置服务。 在此服务中,我维护一个由 $resource 查询的对象。 我使用这种方法是因为我不想一直查询我的设置,并且因为应用程序的其他部分需要直接受到设置更改的影响。
服务:
module.factory("Settings", [$resource, function($resource){
var resource = $resource("path/to/api/settings");
var settings = resource.get();
return {
getSettings: function(){
return settings;
}
};
}]);
用法:
module.controller("MyController", ["Settings", function(Settings){
var self = this;
self.settings = Settings.getSettings();
self.result = 0;
self.aMethod = function(arg){
//Do some calculate based on settings
self.settings.then(function(){
self.result = arg * self.settings.multiplyBy;
});
};
self.setMultiplyBy = function(arg){
//This will affect all usages where multiplyBy is used
self.settings.multiplyBy = arg;
self.settings.$save();
};
})];
问题是我每次想使用设置时都必须检查设置是否已解决。
所以我的控制器上都有.then() 回调,看起来真的很脏,我不能从回调中返回值。
那么有没有更简单的方法来解决这个问题?
我能否以某种方式确保在应用运行之前加载设置?
【问题讨论】:
标签: angularjs service promise ngresource