Podmodele szkieletowo-relacyjne z RequireJS

Próbuję znaleźć sposób na użycie podmodelów relacyjnych Backbone z RequireJS, gdzie submodele są w różnych plikach niż supermodelka.

Na przykład:

// 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();
  });
});

Kiedy wykonuję alertPeople.js, oczekuję alertu „Witaj, jestem studentem Bobem”, ale zamiast tego otrzymuję ten błąd:Uncaught Error: Module name "Classroom/Person" has not been loaded yet for context: _ z powodu mojej okrągłej zależności. Jakie jest możliwe rozwiązanie tego problemu?

Mój następny numer może potencjalnie dotyczyć kręgosłupa-relacyjnego. W moim pliku app.js dodaję app.ns część zakresu i upewniam się, że wszystkie moje modele są zdefiniowane w obiekcie app.ns. Robię to, więc kiedy definiuję moje subModelTypes, może on rzeczywiście odwoływać się do podmodeli, ale nie jestem pewien, czy to jeszcze zadziała, ponieważ nie mogę ominąć problemu zależności kołowej.

Każda pomoc jest bardzo mile widziana. Dziękuję Ci!

questionAnswers(1)

yourAnswerToTheQuestion