如何使用apply创建新的主干视图
How to create a new Backbone View using apply
我需要创建一个带有参数数组的新View实例。因为我不想打电话给
new View(array)
我尝试过这个解决方案。但不幸的是,这不起作用,这意味着没有arg被传递到initialize函数中。那么,是否可以创建一个传入数组的新视图,但在initialize函数中只有一个参数?
你可以通过一点原型技巧来实现这一点:
function createView() {
var args = arguments;
//create a factory function, so we can get the "this" context
function Factory() { return YourViewClass.apply(this, args);}
//assign factory prototype (essentially makes factory a YourViewClass)
Factory.prototype = YourViewClass.prototype;
//invoke factory function
return new Factory();
};
var view1 = createView({model:model}, 1, 2, 3);
var view2 = createView.apply(null, argumentArray);
一个用可变参数实例化任何"类"(构造函数)的通用解决方案:
function instantiate(ctor) {
//strip first arg, pass rest as arguments to constructor
var args = Array.prototype.slice.call(arguments, 1);
function Factory() { return ctor.apply(this, args);}
Factory.prototype = ctor.prototype;
return new Factory();
};
//call directly
var view1 = instantiate(YourViewClass, {model:model}, 1, 2, 3);
//partially apply to create a factory for a specific view class
var viewFactory = _.partial(instantiate, YourViewClass);
var view2 = viewFactory({model:model}, 1, 2, 3);
相关文章:
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- 如何在AngularJS视图中使用promise(ng-show)
- 地图视图未使用PhoneGap加载
- 调用在同一视图中使用javascript在视图中创建的函数
- 将工厂服务数据发送到控制器,以便在视图中使用
- 允许在Angular控制器或视图中使用html标记
- 在Android Web视图中使用静态文件作为模板
- 在Django视图中使用jqueryajax发布表的rowdata
- 正在获取要在主干视图中使用的节点视图
- 在slickgrid数据视图中使用深度映射
- MVC 4部分视图是否使用其父视图'或者必须将.css和.js添加到局部视图中
- 如何在钛(合金)图像视图中使用后置布局
- 无法在android网络视图中使用AJAX加载HTML部分
- Rails:在Rails视图中使用javascript函数的正确语法
- 在哪里放置仅在一个视图中使用的 JS 在 Codeigniter.
- 为什么视图不使用 .el 呈现
- 在 UWP Web 视图中使用 javascript 访问本地文件
- 视图中使用三元运算符
- 在视图中使用 JS 对圆形描边进行动画处理
- Rails 4 是否允许在.JS视图中使用红宝石代码,在 rails 3 中,文件名中需要包含 .erb.js