MarionetteJS - 无法在模板函数中引用它

MarionetteJS - cannot reference this in template function

我有一个 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();
            }
        });
    }
);

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

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

您可以使用下划线的 bindAll 将模板绑定到您的 marionetteItem View 的 this 上,只要它被调用。所以像 :

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