Submodelos de backbone-relacional com RequireJS

Eu estou tentando encontrar uma maneira de usar submodelos relacional Backbone com RequireJS, onde os submodelos estão em arquivos diferentes do que o supermodelo.

Por exemplo:

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

Quando executo o alertPeople.js, espero um alerta de "Olá, sou aluno Bob", mas recebo este erro:Uncaught Error: Module name "Classroom/Person" has not been loaded yet for context: _ devido à minha dependência circular. Qual é a solução possível para contornar isso?

Meu próximo problema pode estar no escopo do Backbone-relational. No meu arquivo app.js eu adiciono app.ns parte do escopo, e me certifico de que todos os meus modelos estejam definidos no objeto app.ns. Eu faço isso, portanto, quando eu defino meus subModelTypes, ele pode realmente referenciar os submodelos, mas não tenho certeza se isso funcionará ainda, já que não posso passar pelo problema de dependência circular.

Qualquer ajuda é muito apreciada. Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion