javascript - 如何使用 apply 创建一个新的 Backbone View

标签 javascript backbone.js

我需要创建一个带有参数数组的新 View 实例。因为我不想打电话

 new View(array)

我试过了 this solution .但不幸的是,这不起作用,这意味着没有 arg 传递给初始化函数。那么是否可以创建一个传入数组的新 View ,但在初始化函数中只使用一次参数?

最佳答案

你可以通过一些原型(prototype)技巧来实现这一点:

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

关于javascript - 如何使用 apply 创建一个新的 Backbone View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14954561/

相关文章:

javascript - 如何使用 Greasemonkey 代码替换 Head 脚本

jquery - 带有backbone.js的无尽/无限滚动类型解决方案

ruby-on-rails - 使用 Backbone Rails 并得到 `cannot load such file -- ejs`

javascript - 显示的数据不会在状态的嵌套循环中更新

javascript - Ajax查询json源码并输出结果

javascript - 是否可以在未连接互联网时继续使用 Web 应用程序?

javascript - 如何从 Backbone 集合中获取数据到模板

javascript - RequireJS 优化器配置问题,bbb 版本

backbone.js - 通过Javascript访问Cookie以获取用户信息

javascript - 第一次点击后事件处理程序解除绑定(bind)