2016-06-14 3 views
0

サービスでjsonapiを使用できますか?サービスでJSONAPIを使用する

//services/pics.js 

import Ember from 'ember'; 

export default Ember.Service.extend({ 
    findAll: function(){ 
     return Ember.$.getJSON('http://api.donanimhaber.com/api/v1/site/NewsSite?pageIndex=0&pageSize=15'); 
    } 

    }); 

私は試していますが、ページ内に何も表示されません。 DevToolsのクロムにエラーはありません。

//components/image-list.hbs

{{#each model as |pic|}} 
    <div>{{#link-to "pic" pic}}  
    <p class="info">{{pic.Title}}</p><br/> 
    <img src={{pic.Image}} width="300"> 
    {{/link-to}}</div> 
{{/each}} 
{{yield}} 

//templates/index.hbs

{{image-list model=model currentPos=currentPos }} 
{{outlet}} 

//routes/pic.js

import Ember from 'ember'; 
import DS from 'ember-data'; 

export default Ember.Route.extend({ 

    activate: function() { 
     this._super(...arguments); 
     window.scrollTo(0,0); 
    }, 

    pics: Ember.inject.service(), 
    model(params) { 
     console.info(params, "Params"); 
     return this.get('pics').get('pics').find(function(item){ 
      if(Ember.isEqual(params.NewsUrl,item.NewsUrl)){ 
       return true; 
      } 
      else { 
       return false; 
      } 
     }); 
} 
}); 

// routes/index.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    pics: Ember.inject.service(), 
    model() { 
     console.log(this.get('pics').get('pics')); 
     return this.get('pics').get('pics'); 
    } 

}); 
+0

は、なぜあなたはこれをしたいですか?なぜ 'store' *サービスである' ember-data'を使わないのでしょうか。 'ember-data'を使用しない場合は、JSONAPIレスポンスを手動で解析して処理する必要があります。 – Lux

+0

私はそれを試みました。私はそれをすることができませんでした。それから今私はサービスのものを試しています。しかし、あなたがこれを助けることができるのは、私が店で試してみたときです:https://ember-twiddle.com/fe9009abc8ecec2b4b48c91c64c8ff77?openFiles=twiddle.json%2Ctemplates.components.image-list.hbsあなたはデータを見ることができませんここで私のAPIはhttps:/ではないからですが、コード – hbc

+0

を確認することができます。まず 'Ember。$。getJSON'を呼び出すのではなく、' urlForFindAll'を上書きしてください。 [API](http://emberjs.com/api/data/classes/DS.JSONAPIAdapter.html#method_urlForFindAll)とコードをチェックしてください。次にemberデータを使用する場合、なぜルートモデルフックで 'Ember。$。getJSON' *をもう一度呼び出すのでしょうか?あなたの店にそれを求める: 'this.store.findAll( 'news-list')'。次に、APIは* JSONAPI互換ではありません。したがって、 'JSONAPIAdapter'と' JSONAPISerializer'を使用しないでください。 – Lux

答えて

0

理論的には可能ですが、あなたのルートのモデルフックからgetJSON呼び出し結果を返すべきだと思います。

ここで目標が異なるルートでデータを再利用する場合は、ピクチャモデルを定義し、一致するJSONAPIAdapterがAPIを指すように設定する必要があります。次に、モデルフック内のthis.store.findAll( 'pic')を呼び出して、APIからすべてのイメージを取得できます。モデル定義について

チェックガイド:https://guides.emberjs.com/v2.6.0/models/

ともアダプタをカスタマイズする方法について:https://guides.emberjs.com/v2.6.0/models/customizing-adapters/

+0

私もそれを試みました。私はサービスを削除し、モデルnews-list.jsを作成し、その中に属性を入れてから、作成してアダプタに入れ、getJSONコードをその中に入れました。その後、私はhis.store.findAll( 'pic')を使用しようとしましたが、データを取得できません。これはひどいですが、私のapiのhttps //がhttps:// https://ember-twiddle.com/fe9009abc8ecec2b4b48c91c64c8ff77?openFiles=twiddle.json%2Ctemplates.components.image-list.hbsに反応しないので、ここでデータを見ることはできません。 – hbc

関連する問題