问题:文档很少,而且我是个菜鸟——任何人都可以确认将 Backbone.Views 绑定到 Backbone.RelationalModel 实例(来自主干-relational.js)的正确(假设有一种)方法更新/渲染到 dom?我尝试了几种不同的方法,基于 Backbone 中的正常模型/视图绑定,但收效甚微。
背景故事(/更多信息): 我正在学习 Backbone.js 的诀窍,并且在过去一周不得不学习很多东西。如果我遗漏了一些明显的东西(这很可能——包括下面处理我的问题的“正确”方法),请给我打电话。
我正在处理一个 mongodb 支持的 REST 接口(我无法完全控制它——或者我会在服务器端重新设计行为),它充分利用了嵌套字典,所以我一直阅读如何在 Backbone 中最好地表示这一点(同时不破坏 Backbone 提供的出色的 save() + 服务器同步内容)。
我见过两种选择:backbone-relational和ligament.js。
我从backbone-relational.js 开始,并为树中由REST 接口返回的各种字典创建了RelationalModels(backbone-relational 替代Backbone 的标准模型)。它们之间的关系已定义,并且控制台记录来自每个模型的 JSON(在它们各自的初始化函数中)表明它们都在整个集合级别的 fetch() 命令上正确地从服务器调用/加载。
所以,这一切都很棒。
问题:我有视图“监听”每个模型的更新(以及应该在 dom 上渲染模板的绑定函数),它们根本不会“触发”(更不用说渲染......)。主视图在 fetch() 上触发,没问题,加载“顶级”模型并将其呈现在 dom 上——但代表该“顶级”模型中的“外键”模型的视图永远不会这样做(即使数据肯定会被加载到每个模型中,正如上面提到的每个模型上的控制台日志所证明的那样)。
任何见解将不胜感激。
直接响应下面的 Raynos 回复(感谢 Raynos!): 如果我为 UpperLevelCollection 定义了一个基本 url,其中 UpperLevelModels 存在于服务器上的(UpperLevelCollection url)/(UpperLevelModel id),我将如何将这些 LowerLevelCollection 映射到其中的字典键来自服务器端的每个 UpperLevelModel 的一个 JSON 转储?换句话说,在模型中使用集合是否可以像这样正确处理来自服务器的数据转储(显然非常简化,但解决了问题)并正确保存/更新/同步回来?
[{
"some_key": "Some string",
"labels": ["A","List","Of","Strings"],
"content": [{
"id": "12345"
"another_key": "Some string",
"list": ["A","list","of","strings"],
},{
"id": "67890"
"another_key": "Some string",
"list": ["A","list","of","strings"],
}],
}]