【发布时间】:2011-06-21 22:23:34
【问题描述】:
问题:文档很少,而且我有点菜鸟——任何人都可以确认将 Backbone.Views 绑定到 Backbone 实例的正确(假设有一种)方法。 RelationalModel(来自backbone-relational.js)用于更新/渲染到dom?基于 Backbone 中的常规模型/视图绑定,我尝试了几种不同的方法,但收效甚微。
背景故事(/更多信息): 我正在学习 Backbone.js 的诀窍,在过去的一周里我不得不学习很多东西。如果我遗漏了一些明显的东西(这很可能——包括下面处理我的问题的“正确”方法),请告诉我。
我正在处理一个 mongodb 支持的 REST 接口(我无法完全控制它——或者我会在服务器端重新设计行为),它充分利用了嵌套字典,所以我'一直在阅读如何在 Backbone 中最好地表示这一点(同时不破坏 Backbone 提供的出色的 save() + 服务器同步内容)。
我见过两个选项:backbone-relational 和 ligament.js。
我从主干关系.js 开始,并为由 REST 接口返回的树中的各种字典创建了 RelationalModels(主干关系替代主干的标准模型)。它们之间的关系已定义,并且控制台记录来自每个模型的 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"],
}],
}]
【问题讨论】:
标签: javascript backbone.js backbone-relational