我是ember的新手,我正在尝试在我的ember.js应用中创建导航组件。
我之前创建的组件与从API提供的json数据呈现博客文章的方式完全相同。基本上,您在此处看到的代码完全相同,但关键字post已替换为关键字页面。
问题是正在渲染把手组件,但是没有渲染page.title.rendered'。即使我在序列化程序中尝试console.log(有效负载),也没有控制台输出。好像他们没有得到承认。
来自api的json样本
[
{
"id":139,
"title":{
"rendered":"test"
}
}
]
适配器/ page.js
export default Eudora.extend({
pathForType() {
return 'pages';
}
});
模型/ page.js
import Model from 'ember-data/model';
import DS from 'ember-data';
const {
attr,
//belongsTo
} = DS;
export default Model.extend({
title: attr()
});
路由/ pages.js
import Ember from 'ember';
const {
Route,
set
} = Ember;
export default Route.extend({
model() {
return this.store.findAll('page');
},
setupController(controller, model) {
set(controller, 'pages', model);
}
});
串行器/ page.js
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
normalizeResponse( store, primaryModelClass, payload, id, requestType) {
payload = { pages: payload };
return this._super( store, primaryModelClass, payload, id, requestType );
}
});
模板/组件/全局navigation.hbs
{{#each pages as |page|}}
<li>
<a href="#">{{page.title.rendered}}</a>
</li>
{{/each}}
模板/ application.hbs
{{global-navigation pages=pages}}
答案 0 :(得分:1)
content
模型中没有page
属性。正确的代码将是
<a href="#">{{page.title.rendered}}</a>
我想在adapters/page.js
文件中,Eudora
正在扩展DS.RESTAdapter
。
页面路径模型挂钩返回页面模型,但您尝试将其包含在application.hbs
中。所以将{{global-navigation pages=pages}}
移至routes/pages.hbs
。并访问网址'/pages
。
我为您创建了示例EMBER-TWIDDLE。这将显示应用程序和页面路由的结果。
答案 1 :(得分:0)
感谢@kumkanillam帮助我找到答案。正如评论中所写,我的问题是:
...您在应用程序路径中包含全局导航但是您 正在页面路线中加载模型......
因此我必须扩展我的路由/ application.js以包括帖子和页面。下面的代码说明了我是如何做到的:
路由/ application.js中
take