问题标签 [backbone-relational]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2655 浏览

javascript - Backbone-relational.js + Backbone.View(s)

问题:文档很少,而且我是个菜鸟——任何人都可以确认将 Backbone.Views 绑定到 Backbone.RelationalModel 实例(来自主干-relational.js)的正确(假设有一种)方法更新/渲染到 dom?我尝试了几种不同的方法,基于 Backbone 中的正常模型/视图绑定,但收效甚微。

背景故事(/更多信息): 我正在学习 Backbone.js 的诀窍,并且在过去一周不得不学习很多东西。如果我遗漏了一些明显的东西(这很可能——包括下面处理我的问题的“正确”方法),请给我打电话。

我正在处理一个 mongodb 支持的 REST 接口(我无法完全控制它——或者我会在服务器端重新设计行为),它充分利用了嵌套字典,所以我一直阅读如何在 Backbone 中最好地表示这一点(同时不破坏 Backbone 提供的出色的 save() + 服务器同步内容)。

我见过两种选择:backbone-relationalligament.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 转储?换句话说,在模型中使用集合是否可以像这样正确处理来自服务器的数据转储(显然非常简化,但解决了问题)并正确保存/更新/同步回来?

0 投票
4 回答
10781 浏览

javascript - 使用 Backbone-relational 在 Backbone 中创建嵌套模型

我想使用主干关系在我的主干.js应用程序中嵌套模型。

我已经能够按照文档中的示例创建嵌套对象(例如一对多关系)。但是我不明白如何以更新上层对象的方式绑定下层元素。我认为一个工作应用程序将是一个非常有用的教程。

所以我的问题是:如何扩展Todos 教程backbone-relational以便:

  • 可以为每个项目添加/删除子项目
  • 双击任何子项对其进行编辑(就像原始的 Todo 示例一样)
  • 点击一个项目隐藏/显示其子项目
  • 子项不单独获取,而只是 Todo 项的数组属性

更新:我为这个问题创建了一个 jsfiddle。到目前为止,我有:

  • 导入了上面提到的 Todo 例子
  • 创建TodoSubitem模型和TodoSubitemList集合
  • Todo模型更改为扩展RelationalModel而不是,ModelHasManyTodoSubitem
  • subitem-template在 html 代码中添加了一个

但我仍然不确定如何:

  • subitems添加仅在单击Tododiv时出现的输入字段
  • 将子项数据作为Todo对象的属性,但仍将TodoSubitemViewDOM 元素绑定到它们(例如<li>标签)。
0 投票
1 回答
417 浏览

javascript - 将视图放入模型中是不好的行为吗?(Backbone.js)

嗨,我有一个模型,里面和里面都有模型......我需要查看所有这些模型并在雇佣关系中接触它们。

认为所有模型都有视图,例如当调用 B 模型渲染函数时,我需要调用两个 C 模型渲染函数。

所以我决定通过重写初始化方法在模型内创建所有相关视图。

所以我的问题是这种行为对 mvc 架构有害吗?还是自然的?

0 投票
2 回答
2537 浏览

javascript - 骨干关系延迟加载

我将 Backbone 与我的 RESTful JSON API 一起使用,以创建一个适用于帖子及其评论的应用程序。我一直在尝试让 Backbone Relational 工作,但在延迟加载时遇到了问题。

我加载了一个帖子列表,没有相关评论。单击列表中的帖子时,我会打开一个视图,该视图会获取完整的帖子、包含的评论并呈现它。

我有 2 个 Backbone.RelationModels、帖子和评论。与评论的帖子关系设置如下:`

现在我面临的问题是,一旦我检索到我的列表,关系就被初始化了,它还不包含评论。我稍后通过它的 URI 获取模型来加载完整的数据。但是,关系似乎没有重新初始化,调用 Posts.get(1).get('comments') 返回一个空的 Comments 集合!

有谁知道我怎样才能最好地解决这个问题?数据在那里,只是评论的集合似乎没有更新。

编辑:我可以让 Post 模型将它的 change:comments 绑定到自身,从而更新集合。但是,我似乎找不到获取原始评论 JSON 的可靠方法,因为 this.get('comments') 返回 Comments 集合。

注意:在我的集合中,我使用以下代码解析 JSON 以使其与我的 API 一起使用:

这是因为我的 API 返回的 JSON 返回带有索引键(关联数组)的对象,而不是原生 JSON 数组。

非常感谢!请提出任何问题,我确定我在某个地方含糊不清!

0 投票
1 回答
3099 浏览

javascript - 在 Backbone-Relational 中定义关系——不确定选项指向哪个方向?

我在理解Backbone-Relational 的文档时花了很长时间;目前还不是 100% 清楚要添加什么关系,例如includeInJSON. 最好通过说明我正在尝试创建的结构来描述我的困惑。我有一个Venue具有零个或多个嵌套Address模型(1:n 关系)的模型。后端存储是 MongoDB,它可以嵌入对象。我想以这种格式存储它:

(请忽略丑陋的数据结构;为简洁起见,我对其进行了调整。)现在我相信我建立了和之间的关系VenueAddress因此:

如果我理解正确,我设置includeInJSON为 false 以防止Venue被序列化到venuekey in 中Address,但在 reverseRelation 下我includeInJSON留空以便将完整(没有场地属性)序列化为-属性中Address的数组正如我所希望的,例如。正确的?addressesVenue

出于同样的原因,我试图理解与加入式关系相关的相同概念。考虑Venue现在有一个organisationID字段:

使用文档中的示例,似乎更喜欢这种Backbone.HasMany关系,我认为我必须这样设置Organisation

...应该序列化到上面的例子中,对吧?(即,Venue抓取Organisation'sid并将其插入organisationID,并且Organisation不序列化任何列表Venues

在此先感谢您的帮助——期待使用这个方便的库,在为 Backbone.js 编写我自己的关系胶水之后,我的眼球被抓了出来 :-)

0 投票
1 回答
1471 浏览

javascript - 骨干关系事件未触发?

我有 createModels所以themodel.get('subModels')返回模型的集合。


现在,如果我将更改的 subModel 数据传递给mymodel

不应该themodel抛出一个change事件?它不适合我。


如果我将相同的数据传递给mymodel

themodel.attributes.subModels抛出addupdate事件,即使没有什么是新的。

我不确定为什么会发生这些问题,任何帮助都会很棒,谢谢!!!!

0 投票
2 回答
1246 浏览

javascript - Backbone.js + Relational + AMD ...引导关系

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

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

我有这种来自服务器的引导数据结构,存储在“ window.bootstrap ”属性中。

现在我对这种方法感到困惑。这是我的“数据模型/块”模块:

模块“ DataModel/Department ”只是没有任何关系的普通 RelationalModel。此外,这里提到的每个 Collection 也很简单,除了像这样引用 Model 之外没有任何其他内容:

最后,这里是 Bootstrap 模块,它看起来像这样:

我希望它会为这些块找到部门并在那里分配模型,但是调用

...让我不确定。

但这不是结束。我也将拥有与部门相关的服务器中的其他实体。而且我想看看,它会自动从该引导程序附加部门,所以我可以透明地使用它。

我不知道我是否误解了这个关系库,或者它还没有准备好 AMD。任何帮助表示赞赏。

0 投票
1 回答
172 浏览

javascript - Backbone.js 突出显示因页面上的大量数据而损坏

我在应用程序中使用 Backbone.js。我将段与网址相关联。所以一个段可以包含许多 url,并且给定的 url 可以在任何段中。有一个 url 窗格和一个段窗格。问题是突出部分。所以,当我点击一个片段时,我想突出显示它的网址。我已将页面上显示的 url 数量限制为 200。如果 url 超过 200 个,我们只向用户显示前 200 个,其余的,用户只需使用实时搜索来查找他正在寻找的 url . 问题是当 URL 少于 200 个时,当我单击一个段时,突出显示有效。当有超过 200 个 url 并且当用户点击一个段时,突出显示不起作用。如果有超过 200 个 url,我将在集合上使用 slice,只需突出显示前 200 个,但这不起作用。这是代码片段。有人对如何解决这个问题有什么好的建议吗?

在 SegmentView.js 中为toggleSelection函数:

0 投票
3 回答
5193 浏览

javascript - 需要下划线模板帮助 - 模板集合

我正在使用 underscore.js 进行模板化。这是一个示例模板。

在一个backbone.js view.render() 中,我将一个集合传递给模板。

我的问题是,我必须编写循环代码吗?我可以不只是传递一个集合并下划线足够聪明以在集合中为每个项目呈现一个项目吗?underscore.js 是否也为嵌套模板提供了一些东西?集合中的每个项目实际上都有一个我需要渲染的项目集合。如何从该模板中调用另一个模板。当然,非常感谢任何链接、提示和/或教程。

谢谢!

0 投票
1 回答
643 浏览

javascript - 有没有办法使用 Backbone 和/或 Backbone-Relational 将事件绑定到所有嵌套模型?

我有一个非常强大的 BackboneRelational - 模型,它有许多嵌套模型和集合。基本上,如果用户更改了关于这个模型或其子模型/集合的任何内容,我需要在 UI 中做一些事情来表明这一点。所以我想要一个无论子模型改变都会触发的主改变事件。是否有捷径可寻?我编写了一个函数,它递归地遍历我的所有模型并添加一个更改事件,但是我在绑定到同一个模型两次、竞争条件等方面遇到了问题。