我正在使用最新的ember-cli并正在测试它,使用ember-data创建非常简单的应用程序,并为RESTAdapter创建http-mock - ember生成http-mock api-server < / p>
来自API的单一帖子:
http://localhost:4200/api/api-server/posts/1
结果
{"post":
{
"id":1,
"title":"How to write a JavaScript Framework",
"author":"Tomhuda Katzdale",
"body":"Lorem ipsum dolor sit amet"
}
}
以下是所有相关代码:
适配器
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
namespace: 'api/api-server'
});
模型
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
author: DS.attr('string'),
body: DS.attr('string')
});
router.js
import Ember from 'ember';
var Router = Ember.Router.extend({
location: EmbercliDataENV.locationType
});
Router.map(function() {
this.route('application');
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});
export default Router;
路线(帖子和帖子) - 查看和子视图
发布路线
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('post');
}
});
路线后
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
return this.store.find('post', params.post_id);
}
});
模板
posts.hbs
<h2>Posts List</h2>
<ul>
{{#each}}
<li>
{{#link-to 'post' this}}{{title}}{{/link-to}} | {{author}} | {{body}}
</li>
{{/each}}
</ul>
{{outlet}}
发布hbs
<h2>Single Post</h2>
<p>Post title: {{title}}</p>
<p>Post author: {{author}}</p>
<p>Post body: {{body}}</p>
问题:如果你看一下下面的屏幕截图,在chrome ember调试器中,单个帖子模型被挂钩到帖子路线但是没有在post.hbs中打印
只使用ember入门套件,完全相同的应用程序完全没问题。
感谢您的帮助,欢呼声
更新
以下是使用入门工具包编码的完全相同的Ember应用程序,xampp中的主机和REST Api的PHP Slim框架。 工作愉快!
答案 0 :(得分:0)
尝试修复您的数据,因为帖子嵌套在帖子中,请尝试:
{"post":[
{
"id":1,
"title":"How to write a JavaScript Framework",
"author":"Tomhuda Katzdale",
"body":"Lorem ipsum dolor sit amet"
}]
}
如果数据可见,请检查你的帖子hbs,然后帖子应该可以正常工作
答案 1 :(得分:0)
在浏览Ember.js论坛后,我得到了答案 - http://discuss.emberjs.com/t/strange-behavior-w-retrieving-model-from-controller/6155
使用 Ember生成控制器命令时,您最终会得到 Ember.Controller ,而不是 Ember.ObjectController 或 Ember.ArrayController 哈哈。
我从以下位置编辑我的帖子控制器:(由Ember生成控制器命令生成)
export default Ember.Controller.extend({
});
到
export default Ember.ObjectController.extend({
});
现在该模型具有约束力:D
答案 2 :(得分:0)
<h2>Posts List</h2>
<ul>
{{#each}}
<li>
{{#link-to 'post' post}}{{title}}{{/link-to}} | {{author}} | {{body}}
</li>
{{/each}}
</ul>
{{outlet}}
1. 而不是'this'使用帖子,希望这可以解决问题 http://emberjs.com/guides/templates/links/#toc_adding-additional-attributes-on-a-link