我想知道是否可以完全更改模型,不仅是它的值,而且它是已经初始化的View的实际参考。我见过this question但它只是指模型值。
我创建了一个可重复使用的视图(呈现Google地图)并且它被其他不同的视图使用,而不是通过创建可重复使用的模块作为子视图,而是导航到显示全屏地图的URL,这是一个我的观点的实例。
这个地图View,接收一个初始化的模型,后来在这个视图中被修改,并且由于它是相同的模型引用,它还更新了调用(请求导航到)地图的视图模型,我正在调用所有视图来自我的路由器,它知道创建了哪些视图并保存对所有视图的引用,因此我可以通过这种方式在视图之间共享模型。
var myRouter= Backbone.Router.extend({
routes : {"viewA(/)" : "invokeViewA"
"viewA/map" : "invokeViewAMap"
//... same with ViewB
},
//...
invokeViewAMap : {
if (mapViewInstance){
//if the map already exists i want to update its model with the viewAinstance.model
} else{
//there is no map view yet so let's create it and send the model i need updated later on
mapViewInstance = new AddressFinderMapView({model : viewAInstance.model});
}
},
invokeViewBMap {
//similar to the above but using viewBInstance's model
}
});
var AddressFinderMapView = Backbone.View.extend({
//initialize function
//render function
//init google map
events : {"click button" : "updateModelWithAddress"},
updateModelWithAddress : function(){
//Here is where i need to update the model values, of the model that this view has received, so far it works with the model that was sent on initialization
this.model.set({
//latitude and longitude from the map
})
}
});
其他想法:
答案 0 :(得分:3)
只需将新模态分配给视图实例的model
属性,例如:
viewInstance.model = newModelInstance;