0

異なるビューから 1 つのモデルを変更するにはどうすればよいですか?

擬似コード:

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
   }
});

これは可能ですか?それとも、3 つのビューすべてを 1 つのビューに結合する必要がありますか? (これにより、モンスター ビューになります)

4

1 に答える 1

2

最初にモデルを取得してから、それを使用して必要な数のビューを作成しないのはなぜですか?

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
于 2013-05-22T07:20:03.423 に答える