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