gpt4 book ai didi

AngularJS根据http请求的结果设置常量

转载 作者:行者123 更新时间:2023-12-05 05:22:31 25 4
gpt4 key购买 nike

我想根据作为 HTTP 请求结果的标记设置 module.constant。

下面是我项目中的demo代码;

code in app.js

(function(){
var myApp = angular.module('myApp',['ui.router','ui.bootstrap']);

myApp.contant("API_URL","https://www.helloworld.com/API");

myApp.run(function($rootScope.$http){
some code;
});
})();

我想像这样根据HTTP请求的结果配置一个特殊的Id;

$http.get(API_URL + "/configTag")
.then(function success(response){
var tag = response.data.tag;
if(tag === 0) {
myApp.constant("specialID","111111111");
} else if (tag === 1) {
myApp.constant("specialID","222222222");
} else {
myApp.constant("specialID","333333333");
}
},function error(response){

});

但我是前端和 AngularJS 的新手。我不知道如何实现这一点?

最佳答案

简短回答:$http 服务不能用于创建 Angular 常量。

AngularJS 框架分两个阶段运行:“配置”阶段和“运行”阶段。一旦“运行”阶段开始,就不能再配置提供者,也不能再添加常量。 $http 服务操作只能在“运行”阶段完成。

然而,服务提供者可以提供一个不变的 promise :

app.factory("specialIDpromise", function(API_URL, $http) {
var promise = $http.get(API_URL + "/configTag")
.then(function success(response){
var tag = response.data.tag;
if(tag === 0) {
//return to chain data
return "111111111";
} else if (tag === 1) {
return "222222222";
} else {
return "333333333";
};
}).catch(function error(response){
//return converts rejection to success
return "something";
});
//return promise to factory
return promise;
});

在 Controller 中使用:

app.controller("myCtrl", function(specialIDpromise) {
specialIDpromise.then(function(specialID) {
console.log(specialID);
//Do other things that depend on specialID
});
});

config 阶段的所有操作都需要同步(包括添加常量)。$http 服务的 XHR 等异步操作发生在 run AngularJS 应用程序的 阶段。

关于AngularJS根据http请求的结果设置常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40372010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com