绑定服务属性以承诺数据的问题

时间:2014-01-10 08:14:15

标签: javascript angularjs promise

以下问题令我感到头疼:

我有一个服务,它有一个承诺返回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()承诺的函数中绑定属性。结果相同。对我来说,看起来这只是在绑定到服务属性时才会发生。

0 个答案:

没有答案