2012-08-15 64 views
0

我想附加一个新的模型到一个视图,并使视图重新呈现。我能够首先呈现视图,但我无法将该视图中的数据更改为新模型。Backbone JS如何添加一个新模型到一个视图来自动重新渲染模板

my_model_1 = Backbone.Model.extend({}); 
my_model_2 = Backbone.Model.extend({}); 

my_view = Backbone.View.extend({ 
    initialize : function() { 
     _.bindAll(this, 'render'); 
     this.model.bind('change', this.render); 
    }, 

    render : function(){ 

    } 
}); 

var view_instance = new my_view({ model: my_model_1 }); 

//Template gets rendered 


try{ 
    view_instance.changeModel(my_model_2); 
}catch(e){console.log(e)}; 
try{ 
    view_instance.set(my_model_2); 
}catch(e){console.log(e)}; 
try{ 
    view_instance.fetch(my_model_2); 
}catch(e){console.log(e)}; 
try{ 
    view_instance.model = my_model_2; 
}catch(e){console.log(e)}; 

//Template should get updated with data from model 2 

有什么建议吗?

回答

0

change事件如果在模型中的数据发生变化时触发,在您的情况下,您的视图不是“rerenering”,因为它的模型数据没有改变,而只是切换模型。你可以做的是手动trigger切换视图模型或致电后的变化情况是render方法

例如

view_instance.model = my_model_2; 
my_model_2.change(); 
+0

现在我已经解决了这个问题,它主要是到你的答案虽然在最后,它变成了更多的范围问题(以及与您的建议有关)。我结束了一个window.model变量,并将其设置为my_model_1,然后运行: var view_instance = new my_view({model:window.model});然后,我跑了:window.model.set(my_model_2),这引发了你引用的“更改”,它更新了我的视图。非常感谢!你是完全正确的! – stevenmc 2012-08-15 21:23:15

相关问题