gpt4 book ai didi

javascript - Backbone JS : Modify a single model from different views

转载 作者:行者123 更新时间:2023-12-02 18:43:04 26 4
gpt4 key购买 nike

如何从不同 View 修改单个模型?

伪代码:

var myModel = Backbone.Model.extend({url: 'rest'});
var myCollection = Backbone.Model.extend({});

var myView1 = Backbone.Views.extend({
initialize: function() {
// sets a data in model so it can be use by second and third view
myModel().fetch();
},
events: {
'event': 'callSecondView',
'event': 'callThirdView'
},
callSecondView: function() {
// second view will use the current records in myModel that
// was created during initialization or from the modification
// of 1st or third view
new myView2({model: myModel})
},
callThirdView: function() {
// third view will use the current records in myModel that
// was created during initialization
// of 1st or third view
new myView3({model: myModel})
}
});

var myView2 = Backbone.Views.extend({
events: {
'event': 'modifyMyModel'
},
modifyMyModel: function() {
this.model.set(etc)
// Modifying model here should affect the 1st and 3rd view's model
}
});

var myView3 = Backbone.Views.extend({
events: {
'event': 'modifyMyModel'
},
modifyMyModel: function() {
this.model.set(etc)
// Modifying model here should affect the 1st and 2nd view's model
}
});

这可能吗?或者我应该将所有三个 View 合并在一个 View 中?(这将导致怪物 View )

最佳答案

它看起来很丑,为什么不先获取模型,然后根据需要使用它创建多少个 View :

var MyModel = Backbone.Model.extend({url: '/api/data'});

var View1 = Backbone.View.extend({});

var View2 = Backbone.View.extend({});

var View3 = Backbone.View.extend({});
var myModel = new MyModel();
myModel.fetch({
success: function(){
window.myView1 = new View1({model:myModel});
window.myView2 = new View1({model:myModel});
window.myView3 = new View1({model:myModel});
}
});

// in console
myView1.model == myModel
true

关于javascript - Backbone JS : Modify a single model from different views,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16685441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com