Backbone-relationale Submodelle mit RequireJS

Ich versuche, eine Möglichkeit zu finden, Backbone-relationale Submodelle mit RequireJS zu verwenden, bei denen sich die Submodelle in anderen Dateien befinden als das Supermodel.

Zum Beispiel:

// app.js
define(function() {
  var app = {};
  var app.ns = {};
  Backbone.Relational.store.addModelScope(app.ns);
});

// Classroom/Person.js
define(["app", "./Student", "./Professor"], function(app) {
  app.ns.Classroom.Person = Backbone.RelationalModel.extend({
    subModelTypes: {
      'Student': 'Classroom.Student'
      'Professor': 'Classroom.Professor'
    },

    alertHello: function() {}
  });

  return app.ns.Classroom.Person;
});

// Classroom/Student.js
define(["require", "app", "./Person"], function(require, app) {
  app.ns.Classroom.Student = require("./Person").extend({
    alertHello: function() {
      alert("Hello, I am student " + this.get("name"));
    }
  });

  return app.ns.Classroom.Student;
});

// Classroom/PersonCollection.js
define(["app", "./Person"], function (app, Person) {
  app.ns.Classroom.PersonCollection = Backbone.Collection.extend({
    model: Person
  });
});

// alertPeople.js
define(["Classroom/PersonCollection"], function(PersonCollection) {
  var people = PersonCollection([{"name": "Bob", "type": "Person"}]);
  people.each(function(person) {
    person.alertHello();
  });
});

Wenn ich alertPeople.js ausführe, erwarte ich eine Warnung von "Hallo, ich bin Student Bob", aber stattdessen erhalte ich diese Fehlermeldung:Uncaught Error: Module name "Classroom/Person" has not been loaded yet for context: _ aufgrund meiner zirkulären Abhängigkeit. Was ist eine mögliche Lösung, um dies zu umgehen?

Mein nächstes Problem könnte möglicherweise mit dem Umfang der Backbone-Relational sein. In meiner app.js-Datei füge ich app.ns als Teil des Bereichs hinzu und stelle sicher, dass alle meine Modelle im app.ns-Objekt definiert sind. Ich mache das so, wenn ich meine subModelTypes definiere, es kann tatsächlich auf die Submodelle verweisen, aber ich bin nicht sicher, ob dies noch funktionieren wird, da ich das zirkuläre Abhängigkeitsproblem nicht überwinden kann.

Jede Hilfe wird sehr geschätzt. Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage