从backbone.js中的模型中获取特定属性

时间:2012-02-27 11:06:18

标签: node.js backbone.js

我使用以下代码

获取数据
 _.each(cardIds, function(id){        
                   var mdc = new MdlCard({cardId: parseInt(id)});                                
                  mdc.fetch({data:{cardId: parseInt(id)}});
                   cards.reset(mdc); 
               });

cardIds包含特定列表的cardId。在我的cardview

initialize: function(){           
           _.bindAll(this,'render');
           this.model.bind('change', this.render, this);
           this.model.bind('destroy', this.remove, this);
       },
       render: function() {              
           var res = {data: this.model.toJSON(),ccId: this.model.cid};           $(this.el).html(this.template(res));                                                      

           chkIds = this.model.get('checklists');
           return this;
       },

我将此卡模型传递给模板。但它会为每个请求获取两个对象 第一个对象包含我在创建卡片模型时定义的默认值,第二个包含db(实际上我想要的)

但是当我写这行chkIds = this.model.get('checklists');时,它什么都不返回。请帮我在这段代码中找到问题。

1 个答案:

答案 0 :(得分:2)

简而言之,fetch是异步的。因此,当您首先创建模型时,它尚未从服务器获取所有值。一旦完成提取,它将使用更新的值重新呈现您的视图。我的猜测是你在创建视图后渲染视图。您可以改为等待模型更改事件触发(在完成提取之后),并且一旦提取完成它将呈现。

基于您发布的内容的另一个建议(不一定与您所看到的问题有关):您在调用fetch时不必设置data属性。 Backbone.sync的默认实现将为您执行此操作,因此mdc.fetch({data:{cardId: parseInt(id)}});应为mdc.fetch();

希望这很有帮助 - 如果是这样的话,可以像@tkone建议那样回答