2012-08-15 52 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

相關問題