MarionetteJS - 无法在模板功能中引用它

时间:2015-06-25 15:43:36

标签: backbone.js this marionette

我的视图是Marionette ItemView。我想在模板函数中使用" this" 访问此视图中的其他参数,但我认为它未定义,我不确定原因。

define(['jquery', 'hbs!templates/template', 'backbone'],
    function ($, template, Backbone) {
        "use strict";

        return Backbone.Marionette.ItemView.extend({

            name: "Depth",

            el: ".card",

            template: function(serializedModel){
                var self = this; // self is undefined, so I can't reference this.name, which would be Depth

                var data = {isDepth: true, cardTitle: self.name, injectHTML: template()}; 

                .... do some stuff ...

                return template();
            }
        });
    }
);

2 个答案:

答案 0 :(得分:3)

您可以使用templateHelpers访问模板中的自定义变量:

templateHelpers:function(){ 
    return { 
        card_title: this.name 
    } 
} 

答案 1 :(得分:2)

你可以使用下划线的bindAll将模板绑定到你的marionetteItem,只要它被调用就可以查看。如下所示:

Backbone.Marionette.ItemView.extend({
    initialize: function(){
        _.bindAll(this, 'template');
    },
    template: function() {
        //this refers to the parent object scope.
    }
});