Я чувствую себя потерянным и что-то упускаю из виду, но я не уверен, как подойти к этому, и даже не очень уверен, как спросить ...
Прежде всего, я использую подход AMD (с библиотекой curl.js), что делает это, вероятно, более сложным, но я не отказываюсь от AMD из-за этой проблемы.
У меня есть такая структура данных начальной загрузки с сервера, хранящихся в 'Свойство window.bootstrap '.
Departments = [
{"Id": 1, "Name": "Early Collections" },
{"Id": 2, "Name": "Collections" }
]
Blocks = [
{"Id": 1, "Code": "K", "Department": 1 },
{"Id": 2, "Code": "A", "Department": 2 }
]
Теперь я запутался в подходе к этому.Вот мой модуль ' DataModel / Block ':
define [
'Collection/DepartmentCollection'
'DataModel/Department'
], (DepartmentCollection, Department) ->
Backbone.RelationalModel.extend
relations: [
type: Backbone.HasOne
key: 'Department'
relatedModel: Department
collectionType: DepartmentCollection
]
Модуль ' DataModel / Department ' - это просто RelationalModel без каких-либо связей.Кроме того, каждая упомянутая коллекция здесь также является простой, без ссылки на Model:
define ['DataModel/Department'] , (Department) ->
Backbone.Collection.extend
model: Department
И, наконец, здесь идет модуль Bootstrap, который выглядит следующим образом:
define [
'DataModel/Department'
'Collection/DepartmentCollection'
'DataModel/Block'
'Collection/BlockCollection'
] , (Department, DepartmentCollection, Block, BlockCollection) ->
model = Backbone.RelationalModel.extend
relations: [
type: Backbone.HasMany
key: 'Departments'
relatedModel: Department
collectionType: DepartmentCollection
,
type: Backbone.HasMany
key: 'Blocks'
relatedModel: Block
collectionType: BlockCollection
]
data = window.bootstrap || {}
boot = new model
boot.get('Departments').reset data.Departments || []
boot.get('Blocks').reset data.Blocks || []
return boot
Я быот этого ожидайте, что он найдет отделы для этих блоков и назначит там модели, но вызов
console.debug ins.get('Blocks').at(0).get('Department')
... дает мне неопределенность.
Но это не конец.У меня будут другие объекты с сервера, связанные с Департаментом.И я хотел бы видеть, что он автоматически присоединяет Department из этой начальной загрузки, поэтому я могу использовать его прозрачно.
Я не знаю, неправильно ли я понял эту реляционную библиотеку, или она не готова для AMD.Любая помощь приветствуется.