我正在使用带有 Backbone 和 Marionette 的 Handlebars。我正在编译 Handlebars 模板并将它们存储在可以由 View 定义引用的对象中。我使用 LayoutView 和区域来显示 UI 中所需的各种项目。
我想要做的是将( bool )变量传递到 View 中,以便 Handlebars 决定(通过 block 帮助器 {{#if varName}}
)渲染什么。为了清楚起见,我不想保留这些数据,所以我真的不想让它们成为我要传递的要渲染的模型的一部分。
所以我正在做的是像平常一样定义 Backbone.Model 和 Marionette.ItemView,并尝试通过初始化传递其他变量:
var newUser = new app.UserView({
model: new app.UserModel(),
initialize: function(){
this.isNewDoc = true
}
});
// display the view in a region using app.regions.maun.show(newUser);
// ...etc.
我想要的是能够传入并能够引用诸如 Handlebars 模板中的 isNewDoc
之类的变量,最好是通过 {{#if isNewDoc}}... {{/if}}
。
我已经尝试了 this.isNewDoc = true
行的各种排列,例如 isNewDoc: true
但我没有得到任何结果。我做错了什么?
最佳答案
当我想这样做时,我会重写serializeData方法。您还可以通过覆盖模型中的 toJSON 方法来完成此操作,但正如您所提到的,当您持久化模型时,它将被发送到服务器。由于这些是计算属性而不是持久属性,所以我不喜欢将它们发送到服务器。示例如下:
var newUser = new app.UserView({
model: new app.UserModel(),
serializeData: function() {
return _.extend({
isNewDoc: true
}, this.model.toJSON());
}
});
关于backbone.js - 渲染 Marionette/Backbone View 时将变量传递到 Handlebars 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189017/