2015-09-25 77 views
0

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

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

我不知道是否/如何可以将模型的实体化视图绑定,但我不知道你怎么能解决你的问题的几种方法之一:

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

谢谢你这么好的答案,给我这么多的选择! – styler

0

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

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

+0

不过,如果这意味着我需要添加型号:this.model到的每一种情况下我的开关?试图减少这一点,使实例化,然后绑定模型? – styler