1

我感到有点失落并忽略了一些东西,但我不知道如何解决这个问题,甚至不太确定如何问......

首先,我使用的是 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。任何帮助表示赞赏。

4

2 回答 2

0

潜在的范围界定/名称解析问题?你得到什么输出console.debug(window.Block, window.Department)relatedModel如果您确实获得了模型类型,则将其作为字符串给出可能会有所帮助,例如relatedModel: "Department".

于 2011-10-18T21:32:15.110 回答
0

看来解决了 问题出在一行代码中......

Backbone.Model.prototype.idAttribute = "Id"

我忘了我正在为对象属性使用 PascalCase 标识符。现在一切看起来都很好。

于 2011-10-19T07:22:49.460 回答