我正在开发一个角度js应用程序,我需要先通过服务提供商运行一个函数,然后再进行其他操作。该函数是一个get请求,它返回JSON中的两个变量,返回true
或false
。
如果变量为true,则加载另一个状态(我正在使用ui路由器)。我怎样才能做到这一点?
答案 0 :(得分:3)
在角度中加载的文档并没有很好的用法,因为它是一个框架,我们需要指望角度加载/准备好。使用angular.module('yourApp').run()
,如下所示:
var app = angular.module('yourApp');
app.run(['$rootScope', '$http', function($rootScope, $http){
$http('http://localhost/status/').then(function(res){
$rootScope.somethingStatus = res; // assuming that your response is either true of false.
});
$rootScope.$watch('somethingStatus', function(nv){
// here is where you know your request has been done...
if(nv === true) {
// ...
}
else if(nv === false) {
// ...
}
});
}]);
注意:请注意在任何控制器初始化或查看渲染之前,app.run()
中的运行将被触发。所以稍后当你想要访问你所获得的价值时。在需要时将$rootScope
注入控制器(或任何地方)。
编辑 :修正一些拼写错误。再次更新答案,归功于@georgeawg和@Pierre Emmanuel Lallemant。谢谢你们的修正
答案 1 :(得分:2)
您应该为执行请求的页面编写控制器(为了向用户显示内容),使用默认的html视图,并在收到响应时,然后更改状态以使用所需的控制器。