Backbone.Marionette - 访问ItemView模板或CompositeView模板中的变量

ric*_*hul 6 backbone.js marionette

在这里,我想访问一个变量或变量列表,这些变量或变量列表在从相应的模板初始化新视图时传递.

代码示例

创建列表视图

@Taskit.module "Tasks.List", (List, Taskit, Backbone, Marionette, $, _) ->
    class List.NewTask extends Taskit.Views.ItemView
        template: JST["backbone/taskit/tasks/tasks/list/_templates/new_task"]
Run Code Online (Sandbox Code Playgroud)

上面列表视图的模板

<div id="new-task-form">
</div>
Run Code Online (Sandbox Code Playgroud)

初始化ItemView

view = new Taskit.Tasks.List.NewTask
    project_id: "project_id"
Run Code Online (Sandbox Code Playgroud)

这里我的问题是如何从模板中访问"project_id"变量.

<%= project_id %> #is not working
Run Code Online (Sandbox Code Playgroud)

在Backbone中,它可以通过实现

$(@el).html(@template({task: @model, project_id: "project_id"}))
Run Code Online (Sandbox Code Playgroud)

怎么做Marionette.js?

Sco*_*leo 12

您可以提供自己的方法来序列化数据:

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.itemview.md#itemview-serializedata

Backbone.Marionette.ItemView.extend({
  serializeData: function(){
    var data = this.model.toJSON();
    data.project_id = this.project_id;

    return data;
  }
});
Run Code Online (Sandbox Code Playgroud)

  • Marionette视图中有templateHelpers属性,可用于将数据传递到其模板.要将数据传递给ItemView,您可以使用集合/复合视图的itemViewOptions属性 (4认同)