2012-12-02 14 views
10

Czy konwencjonalne jest używanie klas Marionette.ItemView dla klas widoku, które nie mają powiązanej z nimi specyficznej właściwości model?Używanie marionetki.ItemView do widoków bez modeli?

Jako że Marionette.View nie jest przeznaczone do bezpośredniego użycia, wydaje się, że jest to klasa widoku z wygodnymi wartościami domyślnymi i powiązaniami.

A może warto skorzystać z usługi Backbone.View? Jeśli tak, to czy istnieje sposób na podłączenie Backbone.View do tworzonej przez Marionette architektury, która zbierała śmieci?

Dziękuję za wyjaśnienia!

Odpowiedz

18

ItemView może być używany bez modelu. Robię to dość regularnie.

Jeśli trzeba podać dane dla ItemView, ale nie ma tych danych w Backbone.Model, trzeba zastąpić metodę serializeData:


MyView = Marionette.ItemView.extend({ 
    serializeData: function(){ 
    return { 
     my: "custom data" 
    }; 
    } 
}); 

isnt baza Marionette.View”miało być użyte bezpośrednio, ponieważ nie zapewnia funkcji renderowania. Nie oznacza to jednak, że nie możesz go użyć do stworzenia własnych typów podstawowych widoków. Można na przykład utworzyć typ widoku dla aplikacji, która zajmuje się renderowaniem map google lub widgetu innego producenta lub czymś innym, które nie potrzebuje generalnego renderowania opartego na Backbone.Model, które posiada ItemView.

1

Właśnie się dowiedziałem, można użyć templateHelper do tego - po prostu rzucić to w swoim oświadczeniu ItemView:

templateHelpers: function() { 
    return { 
     message: this.message, 
     cssClass: this.cssClass 
    } 
} 

a potem w szablonie:

<script type="text/html" id="notice-template"> 
    <span class="<%= cssClass %>"><%= message %></span> 
</script> 

a następnie podczas inicjalizacji view:

var noticeView = new App.Views.Notice(); 
noticeView.message = "HELLO"; 
App.noticeRegion.show(noticeView); 

Byłbym zainteresowany twoimi przemyśleniami na temat tego Dericka?

Powiązane problemy