ember.js - ember-cli:在子视图中不可用的ember-data

时间:2014-09-17 16:07:11

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

我正在使用最新的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}}

enter image description here

发布hbs

<h2>Single Post</h2>

<p>Post title: {{title}}</p>
<p>Post author: {{author}}</p>
<p>Post body: {{body}}</p>

问题:如果你看一下下面的屏幕截图,在chrome ember调试器中,单个帖子模型被挂钩到帖子路线但是没有在post.hbs中打印

enter image description here

只使用ember入门套件,完全相同的应用程序完全没问题。

感谢您的帮助,欢呼声

更新

以下是使用入门工具包编码的完全相同的Ember应用程序,xampp中的主机和REST Api的PHP Slim框架。 工作愉快!

enter image description here

3 个答案:

答案 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