2013-05-05 91 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