我对backbone.js有点新意,我正在努力寻找带有belongs_to关系的集合。
我想获取一个用户列表(users / GET),我想显示所有用户,但是有一个belongs_to关联。
例如,显示用户的公司名称。有人知道解决方案吗?
我使用Ruby on Rails 3和CouchDB
def index
User.all
end
class UserCollection extends Backbone.Collection
url: ->
app.routes.users_url
model: User
class User extends Backbone.Model
idAttribute: '_id'
defaults: {
"email": null
"mobile": null
"loc": null
}
url: ->
app.routes.users_url + '/' + (@id || '')
我想像这样展示公司名称......
%script{:id => "user-resource-template", :type => "text/template"}
%td= check_box_tag "select", 1, false, :class => "checkbox", "data-id" => raw("<%= _id %>")
%td <%= name %>
%td <%= email %>
%td <%= company.name %>
答案 0 :(得分:4)
Backbone.js似乎不支持关系,因为official documentation中没有提及它们。
但是,所有内容都没有丢失,有一些Backbone插件可以增加对关系的支持,例如Backbone-relational或ligament.js。我没有对它们进行测试,但Backbone-relational看起来非常活跃。
<强>更新强>
要延迟加载集合并阻止每个关系进行一次抓取,请参阅Backbone.RelationalModel中的fetchRelated
方法:
从服务器中获取模型中引用的模型 属性,但尚未找到/创建。这可以使用 特别适用于延迟加载场景。
默认情况下,将为每个其他模型触发单独的请求 这是从服务器获取的。但是,如果您的服务器/ API 支持它,你可以在一个请求中获取模型集 为您调用fetchRelated的关系指定collectionType。 collectionType应该被覆盖 url(models)方法,允许它构造一个url 对于一系列模型。请参阅顶部的示例 例如Backbone.Relation options或Backbone-tastypie。