2013-03-28 10 views
8

Bir modelde iki model kullanmaya çalışıyorum ve her ikisini de kullanarak şablonu. Marionette ile çalışıyorum. İşte Bir görünümde iki model şablon - Omurga/Kukla

main_app_layout.header.show(new APP.Views.HeaderView({ 
model: oneModel, 
model2 : twoModel} 
)); 

benim görünümdür: Burada bana bakış başlatma olan

APP.Views.HeaderView = Backbone.Marionette.ItemView.extend({ 

    template : '#view_template', 

    className: 'container', 


    initialize: function() { 
       //This correctly logs the second model 
       console.log(this.options.model2); 

    } 

}); 

Ve burada şablon:

<script id="view_template" type="text/template"> 
     <p>{{twoModel_label}} {{oneModel_data}}</p> 
     <p>{{twoModel_label2}} {{oneModel_data2}}</p> 
    </script> 

O hale doğru, oneModel verilerini kullanarak her şey ama Doğru şekilde günlüğe kaydetse bile, ikincisini oluşturmaz. Bıyık kullanıyorum.

Herkes yardımcı olabilir mi?

cevap

16

denemek Sen görünümü üzerinde serializeData yöntemini geçersiz olabilir ve her iki modellerin verileri döndürür adres:


APP.Views.HeaderView = Backbone.Marionette.ItemView.extend({ 

    // ... 

    serializeData: function(){ 
    return { 
     model1: this.model.toJSON(), 
     model2: this.options.model2.toJSON() 
    }; 
    } 

}); 

Sonra şablon şu şekilde görünecektir:

<script id="view_template" type="text/template"> 
    <p>{{model1.label}} {{model1.data}}</p> 
    <p>{{model2.label}} {{model2.data}}</p> 
</script> 
+0

Bu harika - Derick'e teşekkürler! (Bu arada, Marionette'i seviyorum!). Ancak, ben model2 undefined hatası alıyorum (özellikle, undefined için 'JSON' yöntemini çağırılamıyor) - özgün modelden farklı olarak ikinci modeli geçirmenin belirli bir yolu var mı? – streetlight

+0

Bu sorunu model2'yi this.options.model2 olarak değiştirerek düzelttim. Tekrar teşekkürler! – streetlight

+1

oops! right ... this.options.model2 :) –