我想使用 ember 路由和模型来构建一些“雄心勃勃”的网络应用程序。这就是我想要做的。我有一本书和作者模型。在显示作者资源列表时,如果用户单击作者,则通过嵌套路由显示该作者的所有书籍。因此,我想将作者 ID(或姓名)视为传递给图书模型的动态段。但是似乎有一个限制,即动态段必须是primaryKey
当前模型的,不能使用其他模型属性或模型。
我需要编写自定义反序列化器吗?如果是这样,将非常感谢适用于这种情况的示例小提琴。
这是一些示例代码,描述了我正在尝试做的事情,具体问题出现在评论中。
Authors.hbs 模板
<div class="span3">
<h4>Books</h4>
<ul class="unstyled">
{{#each model}}
{{#linkTo 'authors.books' this}}<li>
{{name}} <small>{{date dob}}</small> <small> {{origin}}</small>
</li>{{/linkTo}}
{{/each}}
</ul>
</div>
<div class="span8">
{{outlet}}
</div>
初始化.coffee
@resource 'books', ->
@resource 'book', {path: ':cube_id'}
@resource 'authors', ->
@resource 'AUTHOR', {path: ':AUTHOR_id'}
# QUESTION How to make the next line retrieve books-by-author from the book model?
@route 'books', {path: '/books/:author_id'}
作者路线
module.exports = App.AuthorsRoute = Em.Route.extend
model: ->
App.Author.find()
书路
module.exports = App.BooksRoute = Em.Route.extend
model: ->
App.Book.find()
# QUESTION How should the model be extended to allow for lookup by attribute?
# model: (params) ->
# App.Book.find { author: params.book_id }
作者模型
module.exports = App.Author = DS.Model.extend
name: DS.attr 'string'
origin: DS.attr 'string'
dob: DS.attr 'date'
图书模型
module.exports = App.Book = DS.Model.extend
name: DS.attr 'string'
author: DS.attr # QUESTION How to wire together models here?
#author: DS.belongsTo 'App.Author'
publisher: DS.attr 'string'
published: DS.attr 'date'