2017-01-29 15 views
1

EmberJSの新機能ですので、私の問題を理解し解決するのを手伝ってください。ルート間で選択した値を渡す方法

これは私のモデルである: Books.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function(){ 
     return this.store.findAll('book'); 
    } 
}); 

books.hbs対応からビット:book.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    author: DS.attr('string'), 
    picture: DS.attr('string'), 
    buyer: DS.attr('string'), 
    bought: DS.attr('boolean', { defaultValue: false }), 
    createdAt: DS.attr('date', { defaultValue() { return new Date(); } }) 
}); 

は、私は次のルートを持っています

{{#each model as |book|}} 
     <div class="book-container col-xs-12 col-sm-6 col-md-4"> 
      <div class="card"> 
       <div class="wrapper"> 
        <div class="details col-md-12"> 
         <h3 class="product-title">Title {{book.title}}</h3> 
         <p class="product-description">Author:{{book.author}}</p> 
         {{#link-to 'books.give' }} Buy {{/link-to}} 
        </div> 
       </div> 
      </div> 
     </div> 
{{/each}} 

このコードは、現在私がアプリに保存しているすべての書籍を返します。

アイデアはbooks.hbsからBookオブジェクトを選択し、give.hbsに表示取得することです。

私はgive.hbsに単一books.hbsから単一の本を渡すために

{{#link-to 'books.give' }} Buy {{/link-to}}

このラインを使用していたが、私はそれを行う方法を知っている場合はありませんその道に行く..

gift.hbs私は部分的に再びすべての本をループすることによってそれを行うの非常に非効率的な方法を発明し、タイトルがマッチして表示されます...

{{#each model as |book|}} 
    {{#if (eq book.title "Harry Potter")}} 
     <h2><b>{{book.title}}</b></h2> 
    {{/if}} 
    {{/each}} 

は明らかに「ハリー・ポッター」の文字列がハードコーディングされているが、それはbooks.hbsから渡された可能性があり、私のデータは比較的小さいので、それはトリックを行うだろう。

Ember.js Guruが私にこれを行う正しい方法を示すことができれば、それは大いに感謝しています。

ありがとうございます。

答えて

1

URLをどのように表現したいかによって異なります。
それはだ場合books/give/bookId =>その後、行くためdynamic segments
もしそのbooks/give?bookId=1 =>その後、findRecordを使用して特定の書籍のレコードを取得し、それを使用books.giveルート内部query params実装

のために行きます。

+1

私にこれを解決するアイデアをくれてありがとう@kumkanillam。 私は動的なセグメントで方法を選択しました。 私は 'give'の代わりに 'book'を使っていたはずです。 問題は、新しいレコードを作成するために私が使っていた本のルートが既にあることでした。 –

+0

あなたは 'give'ルートを使って' this.route( 'give'、{path: '/:book_id'}) 'のような別のパスにマップすることができます。 [AlexSpeller route diagonal](http://alexspeller.com/ember-diagonal/route/post)で遊ぶことができます。ダイナミックセグメントを使用する際に問題が見つかった場合はお知らせください。 – kumkanillam

+0

私のルートは正常です。 AlexSpellerのウェブサイトは非常に役に立ちました。 すべてが完全に機能します。最後の質問は、私がgift.hbsの中で私のオブジェクトを呼び出す方法です。私はbook.titleを試しましたが、まだ成功しませんでした。 –

関連する問題