将JSONAPI与服务一起使用

时间:2016-06-14 11:46:43

标签: javascript ember.js ember-data ember-cli

我可以在服务中使用类似的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');
    }

    });

我正在尝试,但我在页面中看不到任何内容。并且chrome DevTools没有错误。

//部件/图像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}}

//模板/ index.hbs

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

//路由/ 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;
            }
        });
} 
});

//路由/ 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');
    }

});

1 个答案:

答案 0 :(得分:0)

理论上你可以,但我认为你应该从你的路线的模型钩子返回你的getJSON调用结果。

如果您的目标是重用不同路径中的数据,那么您应该定义pic模型并配置匹配的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/