我刚刚开始使用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"
}
});
任何指针都将非常感谢!
答案 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'});
},
});