我感到有点失落并忽略了一些东西,但我不知道如何解决这个问题,甚至不太确定如何问......
首先,我使用的是 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 }
]
现在我对这种方法感到困惑。这是我的“数据模型/块”模块:
define [
'Collection/DepartmentCollection'
'DataModel/Department'
], (DepartmentCollection, Department) ->
Backbone.RelationalModel.extend
relations: [
type: Backbone.HasOne
key: 'Department'
relatedModel: Department
collectionType: DepartmentCollection
]
模块“ DataModel/Department ”只是没有任何关系的普通 RelationalModel。此外,这里提到的每个 Collection 也很简单,除了像这样引用 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')
...让我不确定。
但这不是结束。我也将拥有与部门相关的服务器中的其他实体。而且我想看看,它会自动从该引导程序附加部门,所以我可以透明地使用它。
我不知道我是否误解了这个关系库,或者它还没有准备好 AMD。任何帮助表示赞赏。