2012-09-21 18 views
7

Ich habe Rückgrat relationale benutze (https://github.com/PaulUithol/Backbone-relational) meine Anwendung zu bauen, weil ich ein Modell (Zimmer) mit vielen anderen Modellen habe angehängt:Backbone relationale - nicht instanziiert mehr als ein ,,,

  • Zimmer haben viele Kommentar
  • Raum gehört zur Lage

Wie Sie in this issue sehen ich erhalte den Fehler

Error: Cannot instantiate more than one Backbone.RelationalModel with the same id per type

Immer wenn ich Ansicht ändern oder eine Sammlung neu laden.

Jetzt weiß ich, es gibt einen Thread here, wo sie vorschlagen findOrCreate, aber ich bin nicht auf Modelle einzeln zugreifen, aber bin stattdessen Collection.fetch. Gibt es einen Weg um dieses Problem zu umgehen?

+0

hatte ich das Problem ... Ich knnow nicht, warum, aber ich gelöscht die umgekehrte Beziehung und Problem durch das Moment lösen ... –

+0

Ahh. Ich habe nicht die umgekehrten Beziehungen konfigurieren ... – GTF

+0

Werfen Sie einen Blick auf diese: http://stackoverflow.com/questions/12224122/backbone-relational-cannot-instantiate-two-relationalmodel-objects#answer- 12224192 – macool

Antwort

0

Ich hatte ähnliches Problem und es passiert, dass ich Modell mit der Funktion zur Initialisierung benötigen:

model: -> 

    return new Project.Models.ModelName() 

Wenn Sie require_tree. In application.js werden Modelldateien später als Sammeldateien geladen (alphabetisch sortiert). Das Festlegen des Modells mit der Funktion wartet, bis die App ausgeführt wird.

+0

Ich bin nicht ganz sicher, was Sie meinen ... Sie meinen, bevor Sie 'Collection.fetch()' verwenden, sollte ich zuerst ein Modell instanziieren? – GTF

1

Ich hatte ein ähnliches Problem, behoben es durch den Wechsel zu Backbone-Verbände.

https://github.com/dhruvaray/backbone-associations

Die Schnittstelle ist fast genau das gleiche mit nur ein paar kleine Unterschiede sollten so Portierung recht einfach sein.

2

mit Backbone-relational können Sie Objekt aus relationalen speichern oder erstellen. Verwenden Sie dies, um relationale Objekte zu erstellen:

this.model = someModel.findOrCreate({id: 123}) 

Mit diesem wird es neue Objekt erstellen oder erhalten Sie eine aus relationalen Speicher.

http://backbonerelational.org/#RelationalModel-findOrCreate

+1

Das würde funktionieren, aber die Modelle werden dynamisch von den Collections abgerufen. – GTF