いくつかの「野心的な」Web アプリを構築するために、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>
初期化.コーヒー
@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'