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数据对象_Ember.js_Ember Data_Ember Old Router - Fatal编程技术网

Ember.js基于路由器的应用程序未在页面刷新时加载Ember数据对象

Ember.js基于路由器的应用程序未在页面刷新时加载Ember数据对象,ember.js,ember-data,ember-old-router,Ember.js,Ember Data,Ember Old Router,我遵循基于路由器的应用程序结构。 我能够跟随,并使它工作。但当页面显示post(例如/#/posts/2)时,加载内容时出现问题,我怀疑这是因为没有加载特定的post 什么是出路?难道这不应该是开箱即用的吗 小提琴示例: 直接输出: 作品: 不起作用:将反序列化程序添加到“post”路由应该可以。 我建议阅读(至少是“序列化和反序列化状态”部分) 如果您无法使用它,请告诉我,我将创建一个小提琴。余烬路由将字符串“1”而不是数字1传递给find方法来解析帖子。字符串“1”与任何装置都不匹配。更改装

我遵循基于路由器的应用程序结构。
我能够跟随,并使它工作。但当页面显示post(例如/#/posts/2)时,加载内容时出现问题,我怀疑这是因为没有加载特定的post

什么是出路?难道这不应该是开箱即用的吗

小提琴示例:

直接输出:
作品:

不起作用:

将反序列化程序添加到“post”路由应该可以。 我建议阅读(至少是“序列化和反序列化状态”部分)


如果您无法使用它,请告诉我,我将创建一个小提琴。

余烬路由将字符串“1”而不是数字1传递给find方法来解析帖子。字符串“1”与任何装置都不匹配。更改装置(用于测试目的)使其具有字符串ID应该是可行的


我使用的是余烬数据,因此不需要序列化/反序列化,对吗?我还没有看到任何说明这一点的文档。但是我自己刚开始使用ember.js,所以我很可能是错的。啊哈,很好的发现。所以,要么是灰烬中的bug,要么应该有其他方法。
App = Ember.Application.create({});

//MODEL
App.Summary = DS.Model.extend({
  content: DS.attr('string')
});
App.Post = DS.Model.extend({
  title: DS.attr('string'),
  summary: DS.hasMany(App.Summary, {embedded: true})
});

App.Post.FIXTURES = [
  {id:1, title: 'My first post', summary: [{id:1, content: 'This is summary1'}]},
  {id:2, title: 'Another post' , summary: [{id:2, content: 'This is summary2'}]},
  {id:3, title: 'Yet another post' , summary: [{id:3, content: 'This is summary3'}]}
];

//STORE
App.store = DS.Store.create({
  revision: 4,
  adapter: DS.fixtureAdapter
});

//ROUTER
App.Router = Ember.Router.extend({
  root: Ember.Route.extend({
    index: Ember.Route.extend({
        route: '/',
        redirectsTo: 'posts'
    }),
    posts: Ember.Route.extend({
        route: '/posts',
        showPost: Ember.Route.transitionTo('post'),
        connectOutlets: function(router){
           router.get('applicationController').
               connectOutlet('posts',App.Post.find());
        }
    }),
    post: Ember.Route.extend({
        route: '/posts/:post_id',
        goBack: Ember.Route.transitionTo('posts'),
        connectOutlets: function(router, post) {
            router.get('applicationController').connectOutlet('post', post);
        }
    })
  })
});

//CONTROLLERS - VIEWS
App.ApplicationController = Ember.Controller.extend({});
App.ApplicationView = Ember.View.extend({
  templateName: 'application'
});

App.PostsController = Ember.ArrayController.extend({
});
App.PostsView = Ember.View.extend({
  templateName: 'posts'
});

App.PostController = Ember.ObjectController.extend({    
});
App.PostView = Ember.View.extend({
  templateName: 'post'
});

App.initialize();