如何将参数传递给Backbone.js视图?

时间:2013-07-10 01:25:54

标签: javascript backbone.js backbone-views

我正在尝试将参数传递给Backbone.js视图,但我在执行此操作时遇到了麻烦。

我有一个Backbone视图如下:

var DataTypesView = Backbone.View.extend({
    events:{
        'click .datatype': 'add'
    },
    initialize: function(){
        console.log(this.magic);
        this.render();
    },
    render: function(){
        console.log('printing template');
        console.log(this.templateString);

                    etc.
}});

稍后,我按如下方式创建视图:

        dataTypesView = new DataTypesView({magic:true,el:$('#dataViewSpace'),templateString:'#template'});

它不起作用。我不明白为什么el工作得很好(我可以使用jquery和this.$el.访问它),但this.magicthis.templateString都是未定义的。

有没有办法可以按照我上面尝试的方式将参数传递给视图?

在相关的说明中 - 有什么方法可以传递渲染功能吗?我最初尝试传递一个渲染函数(并从骨干视图类中删除它),但是当它不起作用时我尝试传递简单的数据类型而不是......我假设无论需要做什么来传递一个我的第一个问题的参数将用于传递函数。

3 个答案:

答案 0 :(得分:6)

编辑 - 显然这个答案在较新版本的Backbone中不起作用。

我明白了! T'非常简单......只需快速检查一下Backbone.js文档......应该先完成。

传入时的以下参数会自动分配给视图(您可以使用this.variableName访问它们):model,collection,el,id,className,tagName和attributes

可以使用this.options.variableName访问所有其他变量。

从上面的示例中,我可以使用magic代替this.options.magic访问this.magic

耶!

答案 1 :(得分:2)

框架不是唯一的东西转到选项

查看

this.options.magic

答案 2 :(得分:2)

在最新版本的Backbone(我的是1.1.2)中,您可以通过以下方式复制View构造函数选项:

initialize: function(options) {
  _.extend(this, _.pick(options, 'several', 'specific', 'options'));
}

积分转到this github问题。