【发布时间】:2014-08-21 04:04:45
【问题描述】:
我正在尝试使用 Angular 编写一个 JS 函数,以便我可以让它返回一个值,然后在范围上设置一个等于该值的变量。我返回一个 promise 对象,根据 chrome 控制台,它有一个包含我的数据的属性,但是当我尝试访问它时,它说它是未定义的。
代码:
function getData($scope, $http) { //line 71
output = $http.get('/static/json/tickets').
success(function(data, status) {
output.data = data;
console.log(output.data); //Within the proper scope; displays the data array
output.status = status;
}).
error(function (data, status){
output.data = data || "Error";
output.status = status;
});
console.log(output); //displays the promise object, with attribute data
console.log(output.data); // displays 'undefined' (out of scope?)
return output
out = getData($scope, $http);
console.log(out); // Displays the promise object, with attribute data
console.log(out.data); // displays 'undefined'
$scope.data = out.data;
Chrome 控制台:
有什么方法可以在 .success(data, status) 函数中放置一个 return 语句,使父函数 (getData) 返回该值?我对 JS 相当陌生,虽然我知道可以从嵌套函数返回,但 .success 是 $http.get 返回的 promise 的方法,并且试图返回 output.data 会给出一个未定义的对象。这段代码:
function getData($scope, $http) {
dataout = {};
output = $http.get('/static/json/tickets').
success(function(data, status) {
dataout = data;
console.log(output.data); //Within the proper scope; displays the data array
output.status = status;
}).
error(function (data, status){
output.data = data || "Error";
output.status = status;
});
console.log(output); //displays the promise object, with attribute data
console.log(output.data); // displays 'undefined' (out of scope?)
return dataout
还返回一个未定义的对象,这让我觉得 Angular 正在做一些我没有正确处理的异步操作。
【问题讨论】:
标签: javascript angularjs rest scope angularjs-scope