javascript - 实例化 View 后将 Backbone 模型分配给 View ?

标签 javascript backbone.js

想知道当 View 已经实例化时如何添加模型 View ?我创建了一个 switch 语句来生成正确的 View ,但是完成后我想绑定(bind)模型?我尝试过 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());

最佳答案

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

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

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

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

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

关于javascript - 实例化 View 后将 Backbone 模型分配给 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32790784/

相关文章:

javascript - 如何根据子属性将 JSON 排序到数组中

javascript - 使用 Appscript 仅更新空白行

javascript - 基于 Rails 的 javascript 应用程序的安全性 : How do you verify permissions on a user within rendered javascript?

JavaScript 函数无法处理事件

javascript - 如何使数据输入只读,但显示日历?

java - 如何创建类似 Google map (可拖动 map )的用户界面?

javascript - 向javascript中的方法添加方法

javascript - 在 Backbone/Marionette 应用程序中加载页面后,如何获取 DOM 元素的高度?

Backbone.js 'swallows' 如果另一个事件触发重新渲染,则单击事件

javascript - Backbone.js 应用程序完全用 JS 渲染