我正在尝试在我的网站中添加语言支持,我需要添加此代码,以便在所有视图中使用牵线木偶渲染之前运行它,无论哪种类型。
onBeforeRender: function(){
var helpers = this.templateHelpers();
this.templateHelpers = function(){
return $.extend( (helpers), {
lang : function () {
return function(val, render) {
return lang(val);
}
}
});
}
}
我不想扩展所有视图并将这些代码放在每个视图中, 我想知道是否有办法将这些代码放在某个地方,它会在每次渲染之前运行
答案 0 :(得分:3)
您应该可以使用
之类的东西扩展原型_.extend(Marionette.View.prototype, {
onBeforeRender: function(){
var helpers = this.templateHelpers();
this.templateHelpers = function(){
return $.extend( (helpers), {
lang : function () {
return function(val, render) {
return lang(val);
}
}
});
}
}
})
当然,这意味着如果您的一个牵线木偶视图定义了自己的onBeforeRender
,您需要手动调用View
原型上的实现。“
答案 1 :(得分:0)
我认为您应该使用您的代码创建一个视图mixin并使用此mixin扩展每个视图
var LangMixin = {
onBeforeRender: function(){
var helpers = this.templateHelpers();
this.templateHelpers = function(){
return $.extend( (helpers), {
lang : function () {
return function(val, render) {
return lang(val);
}
}
});
}
}
}
var YourView= Backbone.View.extend({
// ...
});
_.extend(YourView.prototype, LangMixin);