使用Wordpress和JSON REST API插件设置Ember-Data DS.RESTadapter

时间:2014-02-09 00:06:13

标签: wordpress ember.js ember-data

我刚刚开始使用ember,并开始使用一个ember.js应用程序,该应用程序从运行JSON REST API插件的Wordpress博客加载它的数据存储。

API的命名空间为“wp-json.php”,并使用这些conventions

问题I: 我尝试设置DS.RESTAdapter并加载模型后收到错误Error while loading route

问题II: 我正在尝试传递标头"type": "custom_post_type_slug",以便获取custom post type的数据,并且无法使其工作。

这是我的代码:

    App = Ember.Application.create({ }); //Create App

    //Router
    App.Router.map(function () { 



           this.resource('posts', {path: '/'},  function() {


                this.resource('post', { path: ':post_id' } );

                 });



       }); //End Router




    //Posts Route 
    App.PostsRoute = Ember.Route.extend({

       model: function(){
           return this.store.find('post');


       },


     });




   //Data

   App.Post = DS.Model.extend({
      title         : DS.attr('string'),

});




   App.PostAdapter = DS.RESTAdapter.extend({
      host: 'http://example.com',
      namespace: 'wp-json.php'
   });


    DS.RESTAdapter.reopen({
      headers: {
       "type": "custom_post_type_slug"

       }
     }); 

任何指针都将非常感谢!

1 个答案:

答案 0 :(得分:6)

好的,经过多次抨击和阅读后,我解决了以下两个问题:

问题I:

此问题与我返回的JSON格式有关。 json被归还为:

[{"id":963,"title":"Joe Whitney"},{"id":962,"title":"Philip Varone"}]

而不是像"posts"那样以ember.js为前缀,而不是像这样:

{"posts" : [{"id":963,"title":"Joe Whitney"},{"id":962,"title":"Philip Varone"}]}

一旦我修改了插件以返回预期格式为ember的JSON,我就解决了这个问题。

问题2: 我不正确地尝试通过RESTAdapter标头传递查询"type": "custom_post_type_slug",而不是通过DS.Store查找方法。我通过跟随DS.Store find method guidelines解决了这个问题,而是通过模型声明传递查询变量,如下所示:

//Posts Route 
App.PostsRoute = Ember.Route.extend({

   model: function(){
       return this.store.find('post', {'type' : 'custom_post_type_slug'});


   },


 });