将额外的参数发送到backbone.js上的视图

时间:2013-12-23 17:32:18

标签: javascript backbone.js

我正在尝试在这些问题中提出的解决方案,但它不起作用

How to pass parameters to a view

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

Backbone.js - passing arguments through constructors

我正在尝试传递额外参数以在我的模板中使用,我读到我传递的所有额外参数我可以在this.options.varName中访问它们但它对我不起作用。

继承控制器代码:

servicios : function(){
    //Crea la colecion de tipos de servicios municipales

    //Crea el modelo para dar de alta un nuevo reporte de servicio municipal
    var reporteServicioSingle = new ReporteServicioSingle();

    //Crea la vista para la pantalla de servicios municipales
    var servicios_view = new Servicios({
        model      : reporteServicioSingle,
        collection : this.reportes,
        tipos      : this.tipos
    });

    // Carga la vista renderisada y inicializa foundation
    $("#app-content").html(servicios_view.render().el);
    $(document).foundation();
},

这是我的观看代码:

render: function(){
    console.log(this.options.tipos);
    this.$el.html(Handlebars.templates.servicios(this.collection));
    $(document).foundation();
    return this;
},

但Chrome开发者控制台,向我发送一个错误,指出选项没有定义。

Uncaught TypeError: Cannot read property 'tipos' of undefined 

谢谢你,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:1)

假设您正在使用Backbone 1.1,它不再自动将options参数自动附加到this.options,这是一个糟糕的变化(imho)。

您需要在初始化方法中自己扩展options参数:

initialize: function(options) {
    this.options = _.omit(options, ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']);
}