如果我有一个名为“Book”的模型和一个名为“Library”的集合,定义如下:
Book
app.Book = Backbone.Model.extend({
defaults: {
title: 'No title',
author: 'Unknown'
}
});
Library
app.Library = Backbone.Collection.extend({
model: app.Book,
url: '/api/books'
});
当我打电话时BookInstance.save()
它是如何得出要使用的 URL 的?它是从集合中派生出来的吗?
In Backbone.model
有2个选项:url
and urlRoot
。它们的目的和区别是什么?
In Backbone.collection
,有一个参数url
。这总是 RESTFUL api 的 GET 请求吗?
基本上,有 3 种可能性来构建模型的 url:
如果模型对象存在于集合中,那么它的url
方法将返回一个由以下组成的地址collection.url
and model.id
: [collection.url]/[id]
.
如果您不想使用集合中的模型,那么model.urlRoot
的值可以用来代替collection.url
片段,产生以下模式:[urlRoot]/[id]
.
最后,如果您不打算将给定类型的多个模型持久保存到服务器,或者在创建每个模型时为其定义 URL,则可以直接为model.url
.
集合仅发送 GET 请求——以获取模型的 JSON 数据数组。为了保存、删除和更新,单个模型的save()
(发布/放置/补丁)和destroy()
使用 (DELETE) 方法。
这是源代码Backbone.Model.url http://backbonejs.org/docs/backbone.html#section-90,这应该可以帮助您:
url: function() {
var base =
_.result(this, 'urlRoot') ||
_.result(this.collection, 'url') ||
urlError();
if (this.isNew()) return base;
var id = this.get(this.idAttribute);
return base.replace(/[^\/]$/, '$&/') + encodeURIComponent(id);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)