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
Javascript ember需要刷新浏览器以获取模型数据_Javascript_Ember.js_Handlebars.js_Ember Router - Fatal编程技术网

Javascript ember需要刷新浏览器以获取模型数据

Javascript ember需要刷新浏览器以获取模型数据,javascript,ember.js,handlebars.js,ember-router,Javascript,Ember.js,Handlebars.js,Ember Router,我遵循《灰烬指南》,稍作修改以显示帖子数据。我定义了一个post路由,它将生成链接,并定义了一个带有动态段的post路由来显示细节。但是,如果单击链接“/posts/1”,它将导航到id为的帖子路径。但是,除非刷新浏览器,否则我将看不到帖子详细信息。有人知道为什么吗?有人能解释一下route serialize钩子的作用吗?我不理解《灰烬指南》中的解释 车把 <script type="text/x-handlebars"> <h2>Welcome to Embe

我遵循《灰烬指南》,稍作修改以显示帖子数据。我定义了一个post路由,它将生成链接,并定义了一个带有动态段的post路由来显示细节。但是,如果单击链接“/posts/1”,它将导航到id为的帖子路径。但是,除非刷新浏览器,否则我将看不到帖子详细信息。有人知道为什么吗?有人能解释一下route serialize钩子的作用吗?我不理解《灰烬指南》中的解释

车把

<script type="text/x-handlebars">
    <h2>Welcome to Ember.js</h2>

    {{outlet}}
  </script>

  <script type="text/x-handlebars" id="posts">
    <ul>
    {{#each post in model}}
      <li>{{#link-to 'post' post}}{{post.name}}{{/link-to}}</li>
    {{/each}}
    </ul>
  </script>

  <script type="text/x-handlebars" id="post">
    <ul>
    {{#each post in model}}
      <h1>{{ post.name }} - {{ post.age }}</h1>
    {{/each}}
    </ul>
  </script>

我自己找到了答案。问题是Ember将自动生成PostRoute并返回单个对象,因为默认控制器将是ObjectController。但是,我仍然尝试在handlebar模板中将对象作为数组循环。因此,它在第一时间不起作用。

现在我知道serialize的作用了,谁能解释一下为什么我需要刷新浏览器以获取数据,而不是在第一时间单击生成的链接?
App = Ember.Application.create();

App.Router.map(function() {
  this.resource('posts');
  this.resource('post', { path: '/posts/:post_id' });
});

App.PostsRoute = Ember.Route.extend({
    model: function () {
        return [{
            id: 1,
            name: 'Andy',
            age: 18
        }, {
            id: 2,
            name: 'Tom',
            age: 14
        }, {
            id: 3,
            name: 'John',
            age: 10
        }];
    }
});

App.PostRoute = Ember.Route.extend({
    model: function (params) {
        var obj = [{
            id: 1,
            name: 'Andy',
            age: 18
        }, {
            id: 2,
            name: 'Tom',
            age: 14
        }, {
            id: 3,
            name: 'John',
            age: 10
        }];
        return obj.filter(function (item) {
            return item.id === parseInt(params.post_id);
        });
    },
    serialize: function(model) {
        // this will make the URL `/posts/12` WTH is this mean????
        return { post_id: model.id };
    }
});