Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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直接路由URL访问不加载数据_Javascript_Jquery_Ember.js - Fatal编程技术网

Javascript EMBER直接路由URL访问不加载数据

Javascript EMBER直接路由URL访问不加载数据,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,我有一个问题,当我直接从浏览器访问我的url时,它不会加载我的单一帖子信息。 示例:/index.html#/posts/10052308 但是,当我访问/index.html#/posts,然后单击其中一篇文章时,我的url会变为/index.html#/posts/10052308并起作用,但是如果我直接在这个url上刷新页面,它就不再起作用了 我正在从API(JSON)加载数据 在我的JS中: App.Router.map(function() { this.resource('pos

我有一个问题,当我直接从浏览器访问我的url时,它不会加载我的单一帖子信息。 示例:/index.html#/posts/10052308

但是,当我访问/index.html#/posts,然后单击其中一篇文章时,我的url会变为/index.html#/posts/10052308并起作用,但是如果我直接在这个url上刷新页面,它就不再起作用了

我正在从API(JSON)加载数据

在我的JS中:

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


App.Posts = Ember.Object.extend();

App.Posts.reopenClass({
  allPosts: [],
  all: function(page, sort, order){
    this.allPosts = [];
    $.ajax({
      url: 'http://intense-bastion-3210.herokuapp.com/run_sessions.json',
      dataType: 'json',
      data: "page=" + page + "&sort_by=" + sort + "&order=" + order,
      context: this,
      success: function(response){
        console.log(response);
        response.run_sessions.forEach(function(posts){
          this.allPosts.addObject(App.Posts.create(posts))
        }, this)
      }
    })
    postsList = this.allPosts;
    return this.allPosts;
  }
});

App.PostsRoute = Ember.Route.extend({
  model: function() {
  var sortColumn = Ember.computed.alias('parentController.sortedColumn');
    return App.Posts.all("1", "id", "desc");
  }
});

App.PostRoute = Ember.Route.extend({
  model: function(params) {
    return posts.findBy('id', params.id);
  }
});
在我的html中

  <script type="text/x-handlebars" id="posts">
    <div class="container-fluid">
      <div class="row-fluid">
        <div class="span3">
          <table class='table'>
            <thead>
              <tr><th>Runs</th></tr>
            </thead>
            {{#each model}}
            <tr><td>
                {{#link-to 'post' this}}{{id}}{{/link-to}}
            </td></tr>
            {{/each}}
          </table>
        </div>
        <div class="span9">
          {{outlet}}
        </div>
      </div>
    </div>
  </script>

  <script type="text/x-handlebars" id="post">

    <h3>ID: {{id}}</h3>
    <h3>Sport TYPE: {{sport_type_id}}</h3>
    <h3>Start Time: {{start_time}}</h3>
    <h3>End Time: {{end_time}}</h3>
    <h3>Duration: {{duration}}</h3>
    <h3>Distance: {{distance}}</h3>
    <h3>Encoded Trace: {{encoded_trace}}</h3>

    <hr>
  </script>

跑
{{{#每个模型}
{{{#链接到'post'this}{{id}{{{/link to}}
{{/每个}}
{{outlet}}
ID:{{ID}
运动类型:{{Sport\u TYPE\u id}
开始时间:{{Start_Time}
结束时间:{End_Time}
持续时间:{{Duration}}
距离:{{Distance}}
编码跟踪:{{Encoded_Trace}}

这就是我打开/index.html#/posts/并单击任何帖子的时候

这是当我刷新页面或直接访问时


有人能帮我吗?

您的
post
路线有问题,它引用了看起来不存在的变量

当您使用指向的链接时,它工作的原因是提供了模型,因此它跳过了模型钩子,但是当您刷新页面时,它不再具有那种奢华,必须从模型钩子获取模型

就我个人而言,我很惊讶它能呈现任何东西,我猜它会爆炸,并说
引用错误帖子没有定义

你可能应该按照这些思路做些事情

App.PostRoute = Ember.Route.extend({
  model: function(params) {
    return App.Posts.allPosts.findBy('id', params.id);
  }
});

这两个模型钩子都依赖于实际具有属性
id
的对象,以及使用
:id
作为动态段的路由器

App.Router.map(function(){
  this.resource('posts', function(){
    this.resource('post', {path:'/:id'});
  });
});
下面是一个简单的示例,其中包含所有必需的元素


kingpin2k宾果游戏!我没有使用.findBy(因为我不使用余烬数据),我交互列表并返回id=Param.id的项;非常感谢。
App.Router.map(function(){
  this.resource('posts', function(){
    this.resource('post', {path:'/:id'});
  });
});