2016-12-09 9 views
0

EmberJSを学習して復元しようとしています。emberでAPI応答を解析できません

{"products":[{"id":1,"name":"lappy1"},{"id":2,"name":"lappy2"}]} 

私は自分のブラウザのネットワークログに取得しています。この応答:私は、次の応答でgetメソッドのAPIを持っています。

マイ製品のルートが似ている:

import Ember from 'ember'; 
     export default Ember.Route.extend({ 
      model() { 
       return { 
        products :this.get('store').findAll('product') 
       }; 
      } 
     }); 

マイproduct.hbsです:

<div> 
<div class="row"> 
    <div class="col-md-4"><b>id</b></div> 
    <div class="col-md-4"><b>Name</b></div>  
</div> 
{{#each model.products as |product|}} 
    <div class="row"> 
     <div class="col-md-4">{{product.id}}</div> 
     <div class="col-md-4">{{product.name}}</div> 
    </div> 
{{/each}} 
</div> 

私の製品モデルは次のとおりです。ログにはエラーはありません

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string') 
}); 

、私のページにはヘッダー部分のみが表示されます。つまり、

<div class="col-md-4"><b>id</b></div> 
<div class="col-md-4"><b>Name</b></div> 

どのようなものがありますか?

答えて

0

Chrome Emberプラグインをインストールし、Chromeをデバッグに使用します。

あなたはRESTAdapterを使用していると仮定しますか?

あなたのRoutemodelフックは、約束ではなく、オブジェクトを返します。これは少し奇妙ですが、私はハッシュを使用することをお勧めします:

model() { 
    return Ember.RSVP.hash({ 
    products: this.store.findAll('product') 
    }); 
} 

代わりに、あなただけの店を呼び出した結果を返すことができます:

model() { 
    return this.store.findAll('product'); 
} 

しかし、この場合には、あなたのテンプレートを変更しますmodel.productsの代わりにmodelを使用するだけです。

+0

Ember.RSVP.hashを使用する理由を教えていただけますか? – AkshayP

+0

'hash'は約束を返します。 'model'フックから非約束(普通のオブジェクト)を返すと、Emberは解決を待つことはありません。同様に、 'findAll'もPromiseを返します。もっと複雑なモデルを持っていない限り、私の答えに示されているように 'model'の2番目の例をお勧めします。 HTH –

関連する問題