在实例化视图后将主干模型分配给视图

Assign Backbone model to view after view has been instantiated?

本文关键字:视图 模型 分配 实例化      更新时间:2023-09-26

想知道当视图已经实例化时我如何添加模型视图?我已经创建了一个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());

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

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

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

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