resource.get({id:1},callback)。$ promise在Angular 1.2.3中未定义

时间:2014-03-19 19:37:54

标签: javascript angularjs

我有以下代码:

service = $resource('api/data/:id/', {
    id: '@id',
}, 'get': {
    method: 'GET',
    isArray: false
});

当我要求这样的东西时:

var promise = service.get({id:1}, callback).$promise

... $promise对象的值未定义。有什么问题?

1 个答案:

答案 0 :(得分:0)

当您在此阶段引用$promise对象时,它是一个空引用。

来自docs on $resource

  

重要的是要意识到调用$resource对象方法   立即返回空引用[...]返回数据后   从服务器现有参考填充实际数据

资源调用阶段$promise对象的行为未定义(没有双关语):

  
      
  • $promise :创建的原始服务器互动的承诺   这个实例或集合。

         

    成功时,使用相同的资源实例解析promise   集合对象,使用服务器中的数据更新。 [...]

         

    失败时,使用http响应对象解析promise,   没有资源属性。

  •   

如果您打算对填充的数据执行操作,请在回调中调用实例操作方法。这就是它的完成方式:

var p = service.get({id:1}, function() {
    p.$save(); // some action method on the instance e.g. $save
});