Backbone.js - Wie verwende ich eine benutzerdefinierte Modelleigenschaft in einer Vorlage?

7

Das könnte eine wirklich einfache Frage sein, aber ich habe eine Menge Zeit, um eine Antwort zu finden.

Mit Rückgrat habe ich diese Zeile:

%Vor%

Ich benutze das dann in einer Sammlung, die von einer URL ausgefüllt wird. Um das Beispiel zu nennen, sage ich, dass ich einen Vor- und Nachnamen habe, und ich möchte etwas wie:

machen %Vor%

Ich kann das im Backbone beispielsweise mit People.first (). FullName () aufrufen. Aber wenn ich People.first () an meine Ansicht übergebe und diese in einer Vorlage rendere, scheint es nicht zu wissen, was FullName ist.

Wie würde ich einem Modell in Backbone eine benutzerdefinierte Eigenschaft hinzufügen und diese in einer Vorlage verwenden?

Prost!

    
boolean 28.05.2012, 03:24
quelle

5 Antworten

14

Deine FullName -Definition macht keinen Sinn, deshalb gehe ich davon aus, dass du das wirklich meintest:

%Vor%

Normalerweise rufen Sie toJSON auf Ihren Modellen auf, um sie für die Verwendung durch eine Vorlage zu serialisieren:

%Vor%

Das Standard toJSON gibt einfach eine (seichte) Kopie von aus die internen Attribute des Modells. Die Attribute werden vermutlich sowohl firstName als auch lastName Eigenschaften haben, aber FullName ist eine Funktion des Modells, daher wird es nicht in den Attributen enthalten sein.

Sie könnten Ihre eigene toJSON angeben:

%Vor%

und dann hätten Sie FullName in Ihrer Vorlage. % Co_de% wird jedoch auch zum Serialisieren des Modells zum Senden von Daten an den Server verwendet. Ihr Server würde am Ende ein toJSON sehen und es könnte sich darüber aufregen. Sie könnten einen anderen Serializer speziell für Vorlagen hinzufügen:

%Vor%

und verwenden Sie dann diese Funktion, um Daten für Ihre Vorlagen zu liefern:

%Vor%     
mu is too short 28.05.2012, 03:45
quelle
4

Ich habe auch eine Weile mit diesem Problem gekämpft, aber ich habe eine Lösung gefunden.

Es ist in ziemlich viel Tiefe enthalten, einschließlich einer Lösung für das Problem, dass toJSON verwendet wird, um die Serverdaten zu senden, in Backbone-berechnete Eigenschaften

    
Mark Kasson 05.09.2013 00:50
quelle
1
%Vor%     
tribe84 27.04.2013 19:26
quelle
0

Es gibt eine viel einfachere Methode. Fügen Sie Ihre Methode in Ihre Initialisierungsmethode ein. Wenn Sie Ihr Modell instanziieren, werden auch alle Ihre Methoden instanziiert.

%Vor%     
T. White 28.09.2013 09:57
quelle
0

Ganz andere Problemumgehung:

%Vor%

So kann die Funktion 'fullName' direkt auf dem Modell

aufgerufen werden %Vor%

oder durch get function, so dass es aus der Vorlage aufgerufen werden kann:

%Vor%     
user1756971 07.12.2014 17:29
quelle