我承诺我认为应该有效,但事实并非如此。服务器返回200并且javascript接收数据而没有生成错误,但视图中的范围不会更新。我不确定什么是错的,因为我还是Angular承诺的新手。任何帮助都会很棒。感谢。
我有一个服务有两个方法处理http回调...
this.addresses = [];
this.getAddresses = function() {
var deferred = $q.defer();
addresses = [];
$http({
method: "GET",
url: '/list_addresses'
}).success(function(data, status, headers, config) {
for (x = 0; x < data[':addresses'].length; x++) {
address = {};
address['balance'] = data[':addresses'][x][':balance'];
address['address'] = data[':addresses'][x][':address'];
address['label'] = data[':addresses'][x][':label'];
address['total_received'] = data[':addresses'][x][':total_received'];
addresses.push(address);
}
deferred.resolve(addresses);
}).error(function(data, status, headers, config) {
console.log(data)
});
return deferred.promise;
};
this.loadAccount = function() {
this.getAddresses()
.then(
function(result){
this.addresses = result;
}, function(error){
// error
}, function(percentComplete){
});
};
现在我的控制器中注入了上述服务
$scope.awesomeServiceIcreated = awesomeServiceIcreated;
$scope.loadAccount = function() {
AwesomeServiceICreated.loadAccount();
};
$scope.$watch('awesomeServiceIcreated.addresses', function(newValue) {
$scope.addresses = newValue;
});
在我的观点中
<button ng-click="loadAccount()">Click me</button>
<div>{{addresses}}</div>
答案 0 :(得分:1)
请检查此问题:"this" inside an anonymous function?
此关键字在异步回调中丢失了它的上下文。
在异步回调console.log(this === window) // true
this.loadAccount = function() {
var _this = this;
this.getAddresses()
.then(
function(result){
_this.addresses = result;
}, function(error){
// error
}, function(percentComplete){
});
};