我无法将$http.get()
内的一个变量的内容传递给此方法之外...它总是undefined
。
我使用$rootScope
进行了测试,但它没有用。
controller('myControl', function ($scope, $http) {
var content;
$http.get('../Json/data.json').success(function (data, content) {
content = data;
}).error(function (data, status, headers, config) {
$scope.dataJson = "ERROR";
});
console.log(content);
});
答案 0 :(得分:2)
这里有两个问题:
content
参数是 shadowing 控制器中的content
变量。content
写入控制台,然后才能获得值。这不起作用,因为$http.get()
是异步的。解决这些问题:
content
参数。它没有用处。content
回调内的success
变量。controller('myControl', function ($scope, $http) {
var content;
$http.get('../Json/data.json').success(function (data) {
content = data;
console.log(content);
$scope.dataJson = content;
}).error(function (data, status, headers, config) {
$scope.dataJson = "ERROR";
});
});
答案 1 :(得分:1)
首先,您不要等待异步$http.get()
完成,因此console.log()
将始终打印出undefined
。
其次,也许你可以考虑使用then()
而不是success()
。
http://bit.ly/18xIHio
以下内容适用于您。
/* JS */
app.controller('myControl', function($http) {
var ctrl = this;
$http.get('http://www.data.fi/data.json').then(function (response) {
ctrl.content = response; // use response.data to get the payload
}).catch(function (error) {
ctrl.content = error;
}).finally(function() {
console.log(ctrl.content);
});
});
<!-- HTML -->
<div ng-controller="myControl as ctrl">{{ ctrl.content | json }}</div>
答案 2 :(得分:0)
请勿在参数中传递内容以获取成功功能。这是一个全局变量。通过它会产生范围问题。 也可以在成功函数内部和外部使用console.log。