Backbone.js +关系型+ AMD…引导关系



我觉得有点失落,忽视了一些东西,但我不确定如何接近这个,甚至不太确定如何问…

首先,我使用AMD的方法(使用curl.js库),这可能会使这更困难,但我不会因为这个问题放弃AMD。

我有这个结构的引导数据从服务器,存储在'窗口。引导的财产。

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')

但这不是结束。我也将有其他实体从服务器与部门的关系。我想看到,它会自动从引导中附加Department,这样我就可以透明地使用它了。

我不知道是我误解了这个关系库,还是它还没有为AMD准备好。

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

看起来问题解决了。问题在一行代码中…

Backbone.Model.prototype.idAttribute = "Id"

我忘了我正在使用PascalCase标识符的对象属性。

相关内容

  • 没有找到相关文章

最新更新