2013-05-05 10 views
6

Hier möchte ich auf eine Variable oder eine Liste von Variablen zugreifen, die beim Initialisieren einer neuen Ansicht von der entsprechenden Vorlage übergeben wird.Backbone.Marionette - Zugreifen auf Variablen in der ItemView-Vorlage oder CompositeView-Vorlage

Codebeispiel

Erstellen einer Listenansicht

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

Vorlage für die oben aufgeführte Liste Ansicht

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

initialisieren ItemView

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

Hier ist meine Frage ho w kann ich auf die Variable "project_id" von ihrer Vorlage zugreifen.

<%= project_id %> #is not working 

In Backbone kann durch

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

wie zu tun es in Marionette.js erreicht werden?

Antwort

12

Sie können Ihre eigene Methode liefern Daten serialisiert:

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

Es gibt templateHelpers Attribut in Marionette Ansichten, die verwendet werden können, Daten zu seiner Vorlage zu übergeben. Um Daten an ItemView zu übergeben, können Sie das Attribut itemViewOptions der Sammlungs-/Composite-Ansicht – deven98602

+1

+1 für '' templateHelpers'' verwenden. Docs: http://marionettejs.com/docs/marionette.view.html#viewtemplatehelpers – sthzg

+0

Marionette-Kern hier sollten Sie 'templateHelpers' verwenden, wenn Sie zusätzliche Daten in Ihrer Ansicht möchten. Verwenden Sie 'serializeData', wenn Sie die Daten in einem Modell oder einer Sammlung transformieren müssen. –

Verwandte Themen