问题标签 [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.
backbone.js - 如何使用 Backbone Relational 从初始 JSON 自动创建多对多关系?
文档中关于多对多关系的示例假设公司将在创建人之后添加。
但是,如果人员数据来自已经包含公司列表(公司 ID)的服务器怎么办?
是否可以修改示例,以便可以使用以下代码(或类似 smt):
当尝试以与一对多关系相同的方式实现这一目标时,我失败了:
这是你可以玩的小提琴:http: //jsfiddle.net/ymr5Z/
backbone.js - 集合上的骨干关系函数
我正在做一个有点大的基于主干的网络应用程序,并且我正在使用主干关系。我想知道我是否可以在一对多关系上有一个自定义函数。
IE 如果我有一个国家模型并且它与多个元数据模型(每个都有一个类型属性)相关,并且我想制作一个函数来将相关集合过滤到某种类型。这不是最好的例子(我不想公开提及项目的细节),但这是我制作的一些示例代码(它可能不是 100% 正确,但它让想法得以通过):
有谁知道你能不能做到这一点?如果有另一种好方法可以做到这一点(同时仍将不同类型保留在同一个集合中),我很想知道。
谢谢!
javascript - 骨干 js 代码异味 - 嵌入子视图的更好方法?
我正在使用骨干关系模型构建一个骨干应用程序(但这对于这个问题应该无关紧要)。
基本上,我有一个编辑按钮,它将显示一个隐藏的 div。在隐藏的 div id 内有一个子视图(称为DetailsView
),它呈现表格元素以填充用户列表。我的模型(对于整个应用程序)大致如下所示:
在我的主视图中(由上述模型的集合提供),当用户单击编辑按钮时,会触发:
代码异味来自我必须detailViewContainer
明确声明这一事实。
最初,在我的 forEach 循环中,会调用视图中的另一个函数,其中包含声明和渲染DetailsView
. 但是,我会失去this
.
我的原始代码看起来像这样:
在 中renderDetailsView
,我会丢失上下文this
并且无法将 附加DetailsView
到正确的 DOM 元素(视图将附加到所有tbody.users
DOM 元素,因为this
上下文变成了窗口,因为它处于循环中)。
必须明确声明 adetailsViewContainer
对我来说似乎很麻烦,我希望能够保持this
上下文指向主视图,而不是整个窗口。
模板只是一DetailsView
组<tr><td></td></tr>
元素。有没有更好的方法来嵌入这个视图而不必求助于创建detailViewContainer
?
(一个可能的选择是DetailView
循环遍历从this.model.get('users')
所有返回的集合......这是个好主意吗?)
javascript - Backbone.js - 访问父“集合”视图中的所有子视图
需要调用.delegateEvents()
父“集合”视图中的所有子视图,以便在从页面中删除父视图然后将其重新打开后重新委托事件。
我可以看到两种方法,就正确的做法而言,这两种方法对我来说都不太正确:
- 每当
addOne(
在父视图中调用 ) 时,将刚刚创建的子视图保存到列表中。当视图被添加回页面时需要稍后重新委派事件。使用数组向后滚动该列表并调用.delegateEvents()
每个子视图项。这种方法的问题是创建一个单独的数组来保存视图中的所有内容,当视图已经有一个 Backbone 认可的方式来影响它的子视图时this.collection.each()
- 使用视图内的内置
View.collection.each()
滚动浏览每个子模型。在每个模型上触发一个事件,导致其相应的视图调用.delegateEvents()
自身。这种方法的问题在于,纯粹的面向视图的操作正在通过模型进行路由。
这些方法中的任何一种都好还是有更好的方法我应该这样做?
非常感谢!
backbone.js - 使用相同的主干关系模型来处理数据的预加载和临时加载
我有一棵模型树,我想让它们预先从一个大的 JSON 请求中加载,然后能够一次更改它们,而无需保存整个树或重新加载整个树,也无需制作每个版本的两个版本模型。
我遇到的问题是,如果每个子模型都有一个 keySource,它们就不会预先加载,但是如果没有 keySource,你就不能单独加载或保存。
我在前期加载中的内容是完全连接的整个对象树(没有 id 列表),因为我没有看到解决方法。那是问题吗?或者如果没有两个以某种方式连接的模型版本,我正在尝试做的事情是不可能的?
javascript - 用于登录和注销功能的 Backbone.js 架构
我有点不确定如何在 Backbone.js 中为登录/注销控件设置功能。
这就是我的想法,但我不确定这是否可以,或者这个架构是否存在问题:
Model
是当前用户。如果模型在执行 a 时得到HTTP 404
响应fetch()
,则“当前用户”应该是匿名用户。如果不是,则Model
保存当前用户的信息。View
: _- 如果当前用户为“匿名”,则显示用户名和密码输入框;和一个“登录”按钮。
- 如果当前用户是有效用户,则视图显示当前用户的用户名和“注销”按钮。
当按下“登录”和“注销”按钮时,我不确定如何处理模型。是否应该通过模型的功能完成登录和注销fetch()
,或者这些操作是否应该触发不同的 POST 请求,其成功结果要么填充Model
要么 要求Model
执行另一个fetch()
?
任何输入表示赞赏,非常感谢!
javascript - 绑定子模型以在骨干网/木偶中查看
我有一个具有 BankAccount 模型的 User 模型,并且我查看了谁的模型属性设置为 User 模型,并且在该视图的模板中我引用了银行帐户的属性:
如果我更新了 bankAccount,则视图不会接受更改:
我尝试在 User 模型的初始化中添加以下内容,但它也不起作用。
有什么建议么?此外,如果有帮助,这两个模型都使用骨干关系。
backbone.js - 与 Require.js (AMD) 的骨干关系
我正在开发一个相当大的网络应用程序,我将在其中使用 require.js,因此一旦它准备好用于生产,我就可以编译它,但我想使用骨干关系。我也将使用骨干木偶,但我不确定它将如何包含在模块的定义功能中。
有人对这个有经验么?
javascript - 骨干为collection.models输出空数组?
有问题,如果我这样做
console.log apples
将放出 Apples Collection,并models: Array(10)
在对象内列出。
但是,console.log apples.models
输出一个空数组。
为什么会这样?
提前致谢。
javascript - 使用 jasmine 测试骨干关系模型
假设我有两个简单的夹具文件,一个用于用户(1),一个用于消息(2)。
消息的主干模型如下 (3)。
如果我加载“消息夹具”,我还希望获得消息模型中指定的有关用户的相关信息。
使用 jasmine 测试套件在规范视图 (4) 中激活此目标的正确方法是什么?
更多细节请参见 (4) 中的注释。
(1)
(2)
(3)
(4)