Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ember.js-ember cli:ember数据在子视图中不可用_Ember.js_Ember Data_Ember Cli - Fatal编程技术网

ember.js-ember cli:ember数据在子视图中不可用

ember.js-ember cli:ember数据在子视图中不可用,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我正在使用最新的ember cli并正在测试它,使用ember数据和http mock for RESTAdapter创建非常简单的应用程序-ember生成http mock api服务器 从API获取单个post: 结果 以下是所有相关代码: 适配器 模型 路由器.js 路由帖子和帖子-视图和子视图 邮路 邮路 模板 博思商学院 后哈佛商学院 问题是:如果查看下面的屏幕盖,在chrome ember调试器中,单个post模型连接到post路由,但没有打印在post.hbs中 仅使用余烬初学者工

我正在使用最新的ember cli并正在测试它,使用ember数据和http mock for RESTAdapter创建非常简单的应用程序-ember生成http mock api服务器

从API获取单个post:

结果

以下是所有相关代码:

适配器

模型

路由器.js

路由帖子和帖子-视图和子视图

邮路

邮路

模板

博思商学院

后哈佛商学院

问题是:如果查看下面的屏幕盖,在chrome ember调试器中,单个post模型连接到post路由,但没有打印在post.hbs中

仅使用余烬初学者工具包,我完全没有问题,完全相同的应用程序

谢谢你的帮助,干杯

更新

下面是完全相同的Ember应用程序,它使用初学者工具包、xampp中的主机和用于RESTAPI的PHP Slim框架进行编码。工作很好


尝试修复数据,因为post嵌套在post中,请尝试以下操作:

{"post":[
   {
      "id":1,
      "title":"How to write a JavaScript Framework",
      "author":"Tomhuda Katzdale",
      "body":"Lorem ipsum dolor sit amet"
   }]
}

如果数据可见,请在您的帖子hbs中进行检查,然后帖子应该可以正常运行

在浏览了Ember.js论坛后,我在那里得到了答案-

似乎在使用Ember generate controller命令时,最终得到的是Ember.controller,而不是Ember.ObjectController或Ember.ArrayController lol

我通过Ember generate controller命令从:generate编辑我的post控制器

export default Ember.Controller.extend({
});

现在这个模型是绑定的:D

<h2>Posts List</h2>

<ul>
  {{#each}}
    <li>
       {{#link-to 'post' post}}{{title}}{{/link-to}} | {{author}} | {{body}}
    </li>
  {{/each}}
</ul>
{{outlet}}
1.希望这能解决问题,而不是使用“this”post

已经试过了。仍然不起作用。我不认为问题出在数据上,因为模型中有数据,如屏幕盖所示,右下角的子视图postgood,如果你能回答你自己的问题,那么人们可以使用它作为参考。谢谢如果需要将创建的控制器设置为对象类型,则需要提供如下正确选项:ember g controller name-type=Object,如果控制器类型为Object或Array,则只有ember会从路由器的模型挂钩中自动设置相应控制器的模型属性。谢谢-稍后将进行检查
import DS from 'ember-data';

export default DS.Model.extend({
  title: DS.attr('string'),
  author: DS.attr('string'),
  body: DS.attr('string')
});
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);
  }
});
<h2>Posts List</h2>

<ul>
  {{#each}}
    <li>
       {{#link-to 'post' this}}{{title}}{{/link-to}} | {{author}} | {{body}}
    </li>
  {{/each}}
</ul>
{{outlet}}
<h2>Single Post</h2>

<p>Post title: {{title}}</p>
<p>Post author: {{author}}</p>
<p>Post body: {{body}}</p>
{"post":[
   {
      "id":1,
      "title":"How to write a JavaScript Framework",
      "author":"Tomhuda Katzdale",
      "body":"Lorem ipsum dolor sit amet"
   }]
}
export default Ember.Controller.extend({
});
export default Ember.ObjectController.extend({
});
<h2>Posts List</h2>

<ul>
  {{#each}}
    <li>
       {{#link-to 'post' post}}{{title}}{{/link-to}} | {{author}} | {{body}}
    </li>
  {{/each}}
</ul>
{{outlet}}