2013-05-05 79 views
6

在这里,我想访问一个变量或一个变量列表,这些变量或变量列表在从相应模板创建新视图时传递。Backbone.Marionette - 在ItemView模板或CompositeView模板中访问变量

代码示例

创建一个列表视图

@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"] 

模板上面的列表视图

<div id="new-task-form"> 
</div> 

初始化ItemView控件

view = new Taskit.Tasks.List.NewTask 
    project_id: "project_id" 

这里我的问题是浩我可以从模板中访问“project_id”变量吗?

<%= project_id %> #is not working 

骨干可以通过

$(@el).html(@template({task: @model, project_id: "project_id"})) 

如何做到这一点的Marionette.js实现?

回答

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; 
    } 
}); 
+4

有templateHelpers其中可用于将数据传递给它的模板木偶观点属性。要传递数据到ItemView,你可以使用''templateHelpers''的集合/合成视图 – deven98602 2013-05-08 11:32:33

+1

+1的itemViewOptions属性。文档:http://marionettejs.com/docs/marionette.view.html#viewtemplatehelpers – sthzg 2014-11-03 15:13:07

+0

这里是Marionette的核心,如果您需要视图中的其他数据,则应该使用'templateHelpers'。如果需要转换模型或集合中的数据,请使用'serializeData'。 – 2014-11-04 22:02:08