在实例化视图后将主干模型分配给视图
Assign Backbone model to view after view has been instantiated?
想知道当视图已经实例化时我如何添加模型视图?我已经创建了一个switch语句来创建正确的视图,但一旦完成,我想绑定模型?我试过set
和view.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());
我不确定是否/如何将模型绑定到实例化视图,但我知道如何以几种方式之一解决问题:
-
在
switch
中实例化视图时将模型作为参数传递:var model = {model: this.model}; var newView; switch (type) { case 'typeOne': newView = new ViewTypeOne(model); case 'typeTwo': newView = new ViewTypeTwo(model); }
-
选择
switch
中的视图类型,然后使用模型实例化:var viewType; switch (type) { case 'typeOne': viewType = ViewTypeOne; case 'typeTwo': viewType = ViewTypeTwo; } var newView = new viewType({model: this.model});
-
使用映射将名称链接到类型,并去掉
switch
:var views = { 'typeOne': ViewTypeOne, 'typeTwo': ViewTypeTwo } var newView = new views[type]({model: this.model});
也许是new ViewTypeOne({ model: this.model })
?
您可能想要用传递的模型实例化您的视图,因为在某些情况下需要初始化模型。
相关文章:
- 如何在视图模型contet更新更新上调用Jquery函数
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 在MVVM视图模型中处理应用程序范围的元素
- 将c#视图模型转换为javascript模型时转义HTML标记
- 使用knockout.js将数组绑定到视图模型
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 聚合物:在不同的视图模型中多次使用元素
- 使用AMD时未定义淘汰组件视图模型
- 如何在Knockout.js中选中复选框时更新视图模型及其依赖项
- 无法将对象列表从视图模型设置为 javascript 变量
- 挖空视图模型函数仅影响最后一个实例
- 挖空.js嵌套视图模型不起作用
- 为什么我的视图模型不起作用
- 挖空、视图模型位于其他对象和数据绑定中
- 如何将经度/经度值绑定到挖空视图模型方法
- 挖空.js:等待视图模型实例化完成
- 在Knockout视图模型中调用jQuery插件是一种有效的模式
- KnockoutJS:如何避免在applyBindings上运行视图模型函数
- 使用knockoutjs操作视图模型
- Kendo UI自定义验证不适用于模板和视图模型