在实例化视图后,将Backbone模型分配给视图?

时间:2015-09-25 21:16:54

标签: javascript backbone.js

想知道在视图实例化后如何添加模型视图?我已经创建了一个switch语句来创建正确的视图,但是一旦完成,我想绑定模型?我试过setview.model = model没有成功?

JS

var type = 'typeOne';

var MyModel = Backbone.Model.extend();

var ViewTypeOne = Backbone.View.extend();
var ViewTypeTwo = Backbone.View.extend();

var model = new MyModel({
    'name': 'James Bond'
});

var newView;
switch (type) {
    case 'typeOne':
        newView = new ViewTypeOne();
    case 'typeTwo':
        newView = new ViewTypeTwo();
}

newView.model = model;

console.log('After', newView.model.toJSON());

2 个答案:

答案 0 :(得分:1)

我不确定是否/如何将模型绑定到实例化视图,但我知道如何通过以下几种方式之一解决问题:

  1. switch中实例化视图时,将模型作为参数传递:

    var model = {model: this.model};
    var newView;
    switch (type) {
      case 'typeOne':
        newView = new ViewTypeOne(model);
      case 'typeTwo':
        newView = new ViewTypeTwo(model);
    }
    
  2. switch中选择视图类型,然后使用模型进行实例化:

    var viewType;
    switch (type) {
      case 'typeOne':
        viewType = ViewTypeOne;
      case 'typeTwo':
        viewType = ViewTypeTwo;
    }
    var newView = new viewType({model: this.model});
    
  3. 使用地图将名称链接到类型,并摆脱switch

    var views = {
      'typeOne': ViewTypeOne,
      'typeTwo': ViewTypeTwo
    }
    var newView = new views[type]({model: this.model});
    

答案 1 :(得分:0)

也许是new ViewTypeOne({ model: this.model })

您可能希望在传递模型的情况下实例化视图,因为在某些情况下,初始化需要模型。