Javascript EMBER直接路由URL访问不加载数据
我有一个问题,当我直接从浏览器访问我的url时,它不会加载我的单一帖子信息。 示例:/index.html#/posts/10052308 但是,当我访问/index.html#/posts,然后单击其中一篇文章时,我的url会变为/index.html#/posts/10052308并起作用,但是如果我直接在这个url上刷新页面,它就不再起作用了 我正在从API(JSON)加载数据 在我的JS中: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
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'});
});
});