为什么没有Backbone Collection fetch返回一个promise

时间:2014-04-09 15:27:06

标签: javascript jquery backbone.js promise backbone-collections

以下示例代码效果很好:

Auth_controller.prototype.isLogged = function(){ 
    //Check if the user is authenticated 
    var getAuthStatus = this.auth_model.fetch(); 
    return getAuthStatus; 
}; 

Auth_controller.prototype.redirect = function(fragment, args, next){ 

    var getAuthStatus = this.isLogged(); 
    var self = this; 

    $.when(getAuthStatus).then(function(response){ 
        //Do something with the response 
    }
}); 

虽然这似乎不适合收藏。
当我控制台登录集合时,我得到一个空集合。

我知道我可以在方法中使用成功回调函数(已经测试过),但我不想这样做,因为我希望函数返回一个我可以从其他函数调用的promise好。
编辑 - >不,抱歉它在成功回调中也不起作用。

有关解决方法的任何建议吗?

编辑;

此图显示了从模型和集合获取方法返回的内容 除非我做错了很明显,否则我不明白为什么会这样 当控制台在成功回调中记录返回的响应时,我看到屏幕截图中显示的空对象已填充。

enter image description here

Edit2:

这是我的收藏品的样子:

define([
  /*--- libraries ---*/
  'jquery',     
  'underscore', 
  'backbone', 

  /*--- model ---*/
  'models/users/role_model'

], function($, _, Backbone, 
                Role_model){

    var Role_collection = Backbone.Collection.extend({ 
        url: '/ingeb/api_v1/users/roles', 
        model: Role_model 
    }); 

    return Role_collection; 

}); 

1 个答案:

答案 0 :(得分:9)

实际上,该集合的fetch确实会返回一个承诺:

  

代表Backbone.sync,负责自定义持久性策略并返回jqXHR。

请参阅http://backbonejs.org/#Collection-fetchhttp://api.jquery.com/jQuery.ajax/#jqXHR