backbone.js - 渲染 Marionette/Backbone View 时将变量传递到 Handlebars 模板

标签 backbone.js handlebars.js marionette

我正在使用带有 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/

相关文章:

javascript - 如何使用 requirejs 和 Backbone.Marionette 同步/组织模块

javascript - 主干关系 - 未捕获的类型错误 : undefined is not a function

backbone.js - 有没有什么方法可以等待调用回调,直到多个主干集合已同步?

backbone.js - 如何从 Backbone Marionette 中的项目 View 实例访问复合 View

javascript - BackboneJS 中意外的构造函数/扩展行为

ember.js - Ember 禁用按钮

javascript - Meteor 为模板助手提供的集合中的每个对象多次渲染父对象

javascript - 如何在失去焦点后立即验证字段

javascript - 在数据表中使用行跨度

backbone.js - Marionette 应用程序的 ChildView 错误