【发布时间】:2015-10-03 15:07:21
【问题描述】:
我正在努力兑现承诺。所以我写了一个如下的示例代码
<!doctype html>
<html ng-app="myApp">
<head>
<meta charset="UTF-8">
<script src="../angularjs.js"></script>
</head>
<body>
<div ng-controller="CartController">
</div>
<script>
var app = angular.module('myApp', []);
app.controller('CartController', function($scope, $q,$http){
$scope.newFun = function()
{
var defered = $q.defer();
$http.get('data.json').success(function(data) {
console.log(data);
defered.resolve(data);
})
.error(function(data, status) {
console.error('Repos error', status, data);
});
return defered.promise;
}
var newdata = $scope.newFun().then(
function(data1)
{
//console.log(data1);
return data1;
});
console.log(newdata);
});
</script>
</body>
</html>
这里我试图返回从 then 函数获得的数据并将其分配给一个变量。但是我得到了一个 $$ 状态对象,它有一个保存数据的值键。是可以直接赋值还是在 then 函数内部我需要使用作用域对象然后访问数据??
【问题讨论】:
-
newdata是承诺对象,您需要在这些承诺回调之一中分配范围变量。在这种情况下也不需要使用$q,因为$http本身会返回一个promise