问题标签 [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 回答
581 浏览

backbone.js - 带有 Backbone 的嵌套属性模板

我有一个Appointment模型,它的每个实例都有一个Client. 这是我编辑约会的模板:

我的问题是我的Client属性没有正确传递给服务器。保存时传递给服务器的 JSON 对象如下所示。假设我有一个客户的电话号码555-555-5555,但我将其更改为555-555-1234然后提交表单:

我省略了很多不相关的字段,但希望你明白我的意思。我已从 更改client_phone555-555-5555555-555-1234clientJSON 对象中的对象的电话号码未更改。我需要以某种方式更改该电话号码。

如何使这些字段(例如电话号码字段)实际“接受”,以便它们作为client对象的一部分appointment而不是直接在下面传递给服务器appointment?我正在使用 Backbone-relational,如果这有所作为的话。

0 投票
3 回答
207 浏览

javascript - BackboneJS 从初始加载中捕获事件 OnAdd

我在不使用 fectch() 的情况下创建一个集合,但 JSON 数据已经可用。

我需要为该集合的每个模型设置一个“位置”值设置,这应该是该模型在此集合中的位置。

我想要做的是捕捉一个事件,在初始加载中,每个模型都是从 JSON 构造并添加到集合中的。

然后我会做类似的事情:

不幸的是,我找不到应该将我的收藏绑定到的事件。此集合的模型还包含其他集合(...),应该做同样的事情。

这可能看起来很奇怪,但我必须这样做,因为我认为稍后我将执行以下操作:

希望这足够清楚。谢谢!

0 投票
0 回答
864 浏览

backbone.js - 骨干关系:从本地存储中删除嵌套数组属性的元素

我有一个 RelationalModel “Todo”,其中“HasMany”注释(嵌套数组)。如何从此嵌套集合中删除特定评论?如果有人还可以提供如何向这个嵌套数组添加(和更新)“评论”的示例,那就太好了。这是整个集合保存在本地存储中的最佳方式吗?为什么没有现成的功能可以从嵌套集合中删除元素并保存它?

我试过了

this.model.destroy()

this.model.bind("销毁", this.remove)

在我的 CommentView 中,但这只会从 DOM 和主干“CommentCollection”中删除评论,而不是从本地存储中删除。所以,不知何故,它不会同步 CommentCollection 和本地存储。

localstorage 中的待办事项如下所示:

评论视图:

0 投票
1 回答
1208 浏览

jquery - 如何在 Backbone.js 中加载具有外键关系的子模型?

对不起,如果这有点令人费解......我还在学习 Backbone.js......

加载和保存具有子模型的主干模型的正确方法是什么?(我什至应该有子模型吗?)

例如,(请原谅咖啡脚本),如果我有类似的东西:

我想说的是 dude.fetch() 并让它同时获取这个家伙和他的地址,当我调用 Backbone.sync('update',dude) 时,我想保存这个家伙和他的地址。如何?

在后端,我使用tastepie 为一些SQLAlchemy 表(不是Django 的ORM)构建我的api,所以我有一个资源用于我的Person 表和Address 表:

Tastypie 的ForeignKey函数创建一个映射,将URL返回到相关地址。

我尝试重载 Dude.parse() 函数来调用 Address() 的 fetch,但它不起作用并且感觉不对,并且引发了各种各样的问题:

  1. 我应该修改我的美味响应以将地址包含为嵌套对象吗?
  2. 如果我更改为嵌套对象,我应该使用主干关系,如未创建主干关系相关模型的问题,还是过度杀伤?
  3. 我应该重载 parse()或 fetch() 函数还是创建自己的主干.Sync() 以获取响应然后手动执行此操作?
  4. 既然是一对一的,我是否应该只拥有一个模型而不是子模型,然后在一个请求中将信息一起发送回?

有这样做的标准方法吗?

0 投票
1 回答
194 浏览

javascript - 如何在没有 DOM 事件的情况下从 Backbone.js 中的视图获取信息到模型

我是 Backbone.js 的新手,在为模型视图关系找出合适的架构时遇到了麻烦。

我有一个视图,其中包含一个输入框和一个模型,该模型应该获取该输入框的内容并将其发送到服务器。

我的问题是我并不总是有一个谨慎的 DOM 事件来触发对视图更新模型数据的请求,例如input.change. 有时代码本身需要要求模型向服务器发送更新。

到目前为止,我已经想到了三个解决这个问题的方法,但我不确定它们是否有用:

  • 在输入元素的keypress事件上更新模型

  • 使用模型初始化视图后,让视图更新/向模型添加一个名为“ get_input_value()”的函数,该函数返回输入框的值

  • 每当应用程序需要请求模型更新服务器时,首先调用视图中的一个函数,将用户在视图中键入的所有信息更新到模型中。

请记住,这是一个简化的示例。视图还包含子视图,所有子视图都包含许多用户可以操作的元素,模型需要使用所有这些信息进行更新,以便它可以更新服务器。

任何帮助和意见表示赞赏!非常感谢!

编辑 :::

根据 machineghost 的回复,我现在看到我没有正确表达这个问题:

有一个 DOM 事件,但问题是它不一定来自使用模型的视图内部。它可能源自路由器或其他视图,并由全局事件处理程序触发。此外,没有 1:1 的视图模型关系。该模型由以不同方式表达模型的多个视图使用。所以在这种情况下,更新服务器的命令似乎不应该通过视图,而是通过模型本身。如果是这种情况,模型必须能够说“用我的观点同步我!”。

但我不知道如何在不违反规则的情况下做到这一点,从而在架构上产生其他问题......

0 投票
1 回答
141 浏览

backbone.js - Backbone.js - 嵌套模型和多个模型集合?

  1. 可以在backbone.js 中有嵌套模型吗?示例:模型 A 的属性之一为模型 B

  2. 一个可以存储多于一种模型类型吗?

0 投票
3 回答
136 浏览

javascript - Backbone.js - 自定义从“fetch()”返回的数据的组织

在调用模型后自定义服务器响应的好方法是fetch()什么?

我问的原因是因为我正在处理一个模型有几个子模型的情况。从服务器返回的数据需要在子模型之间进行拆分。

例子:

非常感谢!

0 投票
1 回答
957 浏览

javascript - 在主干模型中定义公共方法

我需要遍历主干集合并获取从集合中的模型派生的对象数组。

问题是我不知道如何让集合访问在给定对象内创建模型定义时定义的方法:Backbone.Model.extend({})

这是我目前所拥有的架构示例:

我不确定我哪里出错了,但我有一些猜测: * 集合没有以应有的方式迭代它的模型 * 不能在 Backbone.Model.extend({}) 中定义公共方法* 我在寻找公共方法的错误位置 * 由于对 Backbone.js 的使用方式的误解而导致的其他一些架构错误

任何帮助表示赞赏,非常感谢!

编辑

问题是这段代码实际上有一个错误。当集合被填充时,它没有引用“TheModel”作为它的模型类型,所以它创建了自己的模型。

定义集合时需要添加这行代码:model: TheModel

0 投票
1 回答
674 浏览

javascript - Backbone.js 视图可以有模型和集合吗?

Backbone.jsView可以有 aModel和 aCollection吗?

我问的原因是因为我正在使用一个视图,该视图包含一张地图,上面标有位置(使用传单库)。

是一组模型,其中Collection包含要在地图上绘制的坐标。

Model保存诸如地图边界和地图形状之类的东西。

不知道还有什么办法可以把这个拉下来......

任何帮助表示赞赏,谢谢!

0 投票
2 回答
723 浏览

javascript - 替换视图后没有触发主干视图事件,然后放回页面

问题:

视图内设置的事件不会在视图被替换为其他内容后触发$element.html(anotherView),然后使用#element.html(theView).

例子:

执行此代码后,事件起作用:

当页面上的视图被其他内容替换时,此代码将在稍后发生:

将视图添加回页面后,事件不再起作用: