Javascript AngularJS$rootScope未按预期工作
我寻找我的问题,但找不到解决办法。我希望能够将从http.get初始化的变量传递到angular中的http.post。问题是我的retur数组总是空的。你可以找到我的plnkr代码和我想要实现的注释。Javascript AngularJS$rootScope未按预期工作,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我寻找我的问题,但找不到解决办法。我希望能够将从http.get初始化的变量传递到angular中的http.post。问题是我的retur数组总是空的。你可以找到我的plnkr代码和我想要实现的注释。 任何关于如何实现这一点的想法都值得赞赏。在javascript中,调用是异步的。您必须在$http.get响应内调用$http.post: $http.get('someurl').success(function (data) { var data_array = JSON.parse
任何关于如何实现这一点的想法都值得赞赏。在javascript中,调用是异步的。您必须在$http.get响应内调用$http.post:
$http.get('someurl').success(function (data) {
var data_array = JSON.parse(data);
var tempArray = new Array();
tempArray['hi'] = 'hi';
$rootScope.post_array = tempArray;
console.log($rootScope.post_array);
$http.post('some-other-url',$rootScope.post_array).success(function(data){
console.log(data);
})
});
在这一行:
$rootScope.post_array=tempArray
tempArray是否如您所期望的那样?是的,在作用域内数组是正常的。谢谢您的快速回复,先生,但这不应该是开箱即用的吗?$rootScope应该像一个全局js变量,并且它只有在成功时才初始化,所以我猜它也应该在get方法之外可见。确实,将post移到get请求中应该可以工作,但我会预先提供另一种方法。@Susy11 Alexandre是正确的。如果您调试这些行,您将在$http.get(..)
行之后看到,您将直接进入console.log($rootScope.post\u数组)代码>甚至没有到达服务器。如果要将此数据分配给$rootScope
,则必须等待请求返回。Noob问题可能是:success函数并不意味着请求成功?这意味着rootScope在拥有数据后被初始化,对吗?你错了。success函数表示您的请求成功。在我的代码中,当$http.get success完成时,您的$rootScope.post_数组将被分配,您可以在所有应用程序中访问它。但您必须等待请求返回。您必须理解,这里我们处理的是异步函数,它们不是同时执行的。在您的代码中,浏览器将执行$http.get,然后在返回$http.get之前执行$http.post。好的,谢谢您的提醒。我把我的帖子移到了我的get里,现在它开始工作了。接受答复