繁体   English   中英

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

[英]How can I pass a parameter into a Backbone.js view?

我正在尝试将参数传递给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都是未定义的...

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

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

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

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

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

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

从我上面的例子中,我可以通过使用this.options.magic而不是this.magic来获取magic

好极了!

那些不是framwork独有的东西可以选择

顺便拜访

this.options.magic

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

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

积分转到了这个 github问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM