以下问题令我感到头疼:
我有一个服务,它有一个承诺返回get方法:
app.service('resultService',function($http,$q){
return{
currentDocument: {
title: '',
content: '',
tags: ''
},
getDocument: function(title){
var self = this;
var defer = $q.defer();
defer.resolve($http.get('./sys/core/getDocument.php',
{params:{title: title}}).then(function(promise){
return promise.data;
}));
return defer.promise;
}
}
});
这工作正常,如果我做了console.dir(promise.data)
我可以看到一个完美的填充对象:
Object
content: "some good content"
tags: "goodTag"
title: "A nice title"
但是,我想将promise数据绑定到我的服务的属性:
getDocument: function(title){
var self = this;
var defer = $q.defer();
defer.resolve($http.get('./sys/core/getDocument.php',
{params:{title: title}}).then(function(promise){
self.currentDocument = promise.data;
return promise.data;
}));
return defer.promise;
}
但是,如果我这样做,console.dir(promise.data)
将返回:
Object
content: undefined
tags: undefined
title: undefined
我完全不知道这里到底发生了什么。我还尝试在承担getDocument()
承诺的函数中绑定属性。结果相同。对我来说,看起来这只是在绑定到服务属性时才会发生。