【发布时间】:2011-12-09 09:56:14
【问题描述】:
我感到有点失落并忽略了一些东西,但我不知道如何解决这个问题,甚至不太确定如何问......
首先,我使用的是 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
]
Module '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。任何帮助表示赞赏。
【问题讨论】:
-
我真的不知道您所说的“AMD 就绪”是什么意思?所以很有可能骨干关系不是。我认为这与您的处理器品牌无关;)。
-
继续阅读CommonJS proposal。无论如何,看起来你已经准备好了 AMD,这只是我的错误。很抱歉打扰您:) 感谢您提供这个很棒的图书馆。节省大量工作。
标签: javascript backbone.js commonjs backbone-relational