Javascript angular 1.5访问http.get中的数据,无作用域
我使用的是Angular 1.5 我无法从http.get访问数据,无法从http.get访问数据。 让我解释一下: 我有我的组件:Javascript angular 1.5访问http.get中的数据,无作用域,javascript,angularjs,get,angular-promise,Javascript,Angularjs,Get,Angular Promise,我使用的是Angular 1.5 我无法从http.get访问数据,无法从http.get访问数据。 让我解释一下: 我有我的组件: (function(){ 'use strict'; class myComponent { constructor( $http, $scope) { var self = this; self.test="this is a test"; $http.get(MYA
(function(){
'use strict';
class myComponent {
constructor(
$http,
$scope)
{
var self = this;
self.test="this is a test";
$http.get(MYAPI).then(function(response){
self.MYDATA = response.data;
console.log(self.MYDATA)
});
console.log(self.test)
console.log(self.MYDATA)
}
}
angular.module('myApp')
.component('myApp.test', {
templateUrl: 'myTemplate.html',
controller: myComponent,
controllerAs:'vm',
});
})();
console.Log给我:
这是一个测试-->用于测试
未定义-->输出http.get
http.get中的对象{id:1…}-->
因此,我无法通过http.get访问我的数据,这就是我想要的。
$http.get
是一个异步调用,意味着程序执行不会等待从服务器获取数据
因此,在执行位于$http.get()
之外的console.log(self.MYDATA)
时,数据尚未从服务器中获取,这就是为什么会出现未定义错误的原因
要解决此问题或处理异步调用,可以执行以下操作:
var promise = $http.get(MYAPI);
然后在回调的帮助下以以下方式访问数据:
promise.then(
function successCallBack(response)
{
self.MYDATA = response.data;
console.log(self.MYDATA)
}
).then(
function errorCallBack(response)
{
console.log(response);
}
);
这里有一篇很好的文章可以帮助你 请求是异步的,因此分配尚未发生。日志的顺序应该允许您查看此。。。你会注意到回调中的那一个是最后一个被触发的,尽管它是可读顺序中的第一个。没错,我没有注意到,谢谢。你有没有关于将数据输入控制器的线索?这很有效,谢谢。但我不知道为什么,我不能在子组件中使用它。我可以访问子控制器中的self.test,但不能访问self.MYDATA。但也许这个问题并不相关。我必须先把承诺寄到孩子身上,然后再做承诺。然后(),这很有效,但不是很好。或者可以直接从self.MYDATA发送数据吗?您可以将promise声明为global
变量,然后您可以通过回调来访问整个脚本中的response
,或者您可以创建一个服务,而不是子组件,然后将response
作为参数发送给该服务。由于服务电话是同步的,所以这将起作用。谢谢。这对我有帮助