假设我有这样一个json设置:
{
page:1,
items:[
{
name: 'item1',
id:1
},
{
name: 'item1',
id:2
},
{
name: 'item1',
id:3
}
]
}
和一个这样的模型:
var Item = Backbone.Model.extend({
defaults: {name: "No name"}
});
var ItemCollection = Backbone.Collection.extend({
model: Item,
url: '/some/ajax/url',
});
获取此json后,如何将设置为ItemCollection集合的项映射并将页码作为属性添加到集合中?
你需要重写解析
它最终会看起来像这样:
class Item extends Backbone.Model
defaults:
name: "No name"
class ItemCollection extends Backbone.Collection
model: Item
url: '/some/ajax/url'
parse: (data) ->
items = []
_.each data, (item) ->
newItem = new Item
id: item.id
name: item.name
items.push newitem
items
(Coffeescript,但很容易转换为纯javascript)
您的另一个选项是在以下位置找到的关系插件:
https://github.com/PaulUithol/Backbone-relational
我从未使用过它,但我想它应该可以为你做解析映射。
正如@asawyer所提到的,您必须重写parse方法,但不需要实际实例化每个项,如果您返回项数组,主干可以为您这样做。
看留档collection.parse
解析集合。解析(响应)
每当服务器在fetch中返回集合的模型时,主干就会调用parse。函数传递原始响应对象,并应返回要添加到集合中的模型属性数组。
您的代码可以写成
var ItemCollection = Backbone.Collection.extend({
model: Item,
url: '/some/ajax/url',
parse: function(data) {
this.page=data.page;
return data.items;
}
});
使用Backbone.js作为Rails应用的前端框架。就Rails模型而言,我有一个发布模型和一个文章模型。每个出版物与许多文章相关联,并且每个文章只属于一个出版物。当用户决定删除一个出版物时,我希望所有相关的文章也被删除。我说的删除是指从数据库中删除。 以下代码适用于从数据库中删除指定的发布,但不适用于删除关联的项目: 我还试着移动这些文章。destroy()行在success函数中,但这也不
我正在从xml提要创建主干集合。xml提要返回110篇文章(它是外部的,无法返回更少的文章)。我加载到主干集合中,如下所示: 然后,我在列表底部显示带有“加载更多”按钮的前10个项目。当用户单击“加载更多”时,我想从主干集合中加载接下来的10个项目。在视图中,我这样做: 因此,each循环遍历前10个项目,跳过它们,因为它们已经加载(并且小于最后一个li子项的id),然后在接下来的10个项目上创建
问题内容: 我有一个标准的javascript ajax调用,其中将data:设置为json数据。 我试图在php中获取数据,这是行不通的。 但是,可行。 我想知道这可能是我的框架或诸如此类的无法正常工作的东西吗?还是还有其他我可以用来获取数据的东西? 编辑: 因此,框架YII和扩展Restfullyii具有使用一种方法获取其数据的方法return json_decode(file_get_con
问题内容: 我有一个收藏,其中包含一些用户。需要的一些信息是总数,页数等。如何将这些信息传递回客户端?还是它们必须来自一个单独的视图,在这种情况下,我将需要多个ajax调用?我想拥有该集合,并且还接收一些“元数据”。什么是处理此问题的好方法? 问题答案: 通常,您需要在集合类的parse方法中进行处理。它的职责是获取响应并返回一系列模型属性。但是,如果您不希望使用parse方法承担额外的责任,则可
当我尝试发送请求时“http://localhost:1234/api/case/create?signature=123456“从Postman(谷歌扩展)使用body请求中的“表单数据”,我得到错误: “消息”:“此资源不支持请求实体的媒体类型‘多部分/表单数据’。”,“ExceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“multipart/for
我有一个JS对象,如下所示。每当表单元素发生任何更改时,我都想更新它。但由于名称大括号没有转换为数组,所以所有输入名称都作为字符串附加。 我有大约100个元素,包括输入、选择、单选、复选框等。我正在寻找一种动态的方法,无论何时更新任何元素,都可以更新对象。 HTML表单元素 要更新的JS对象 我所尝试的