我昨天问了一个错误的问题(并得到了一个很好的答案),但我意识到这不是我需要的。我需要能够检索 JSON 数据(最好是一次)、存储它并在我的整个服务中访问它。我面临的挑战是,我能找到的所有示例都在谈论使用 JSON 并传递给应用程序/控制器,而在这种情况下,我需要获取它、检查它,然后它决定了我的模块/服务的作用。
例如,我有我的应用程序和控制器,然后我有一个模块,例如(这是伪代码,不打算运行):
angular.module("myModule")
.service("myService1", function($q, myService2, $http) {
this.getModel = function() {
return {
title: "My Title",
desc: "My Desc"
options: function () {
if (condition A)
return "option1";
else
return "option2";
}
};
};
})
.service("myService2", function($q, $http) {
this.getCfgInfo = function () {
var defer = $q.defer();
$http.get("my/json/url").then(function(response) {
defer.resolve(response.data);
});
return defer.promise;
};
})
在此示例中,我想要获取 JSON,并在 myService1 中将其用于文字值(title、desc)和条件(if 中的条件 A)。
我知道我可以做这样的事情(感谢Joel昨天的帮助):
service("myService1", function($q, myService2, $http) {
// get a promise object for the configuration info
var cfgProm = rtDataMapper.getCfgInfo()
this.getModel = function() {
return {
title: cfgProm.then(function(response) {
return response.JSON_NAME;
}),
它工作正常,因为我已经将标题映射回我的模型并且有一个 watch(),但我很难理解如何在服务本身中获取、存储和使用 JSON 作为条件(即if (condition A) where condition A 来自 JSON。试图将这些包装在 .then() 中似乎没有意义,或者至少我不知道该怎么做。
我是 Angular 的新手,正在尝试修改一些留给我们的代码。我猜我不需要 myService2 只是为了获取 JSON。谁能帮我指出正确的方向?我在网上花了几个小时,但似乎找不到相关的参考/示例。
谢谢