【发布时间】:2013-08-05 17:28:48
【问题描述】:
我的应用程序中有一个主页,每个帖子都有另一个页面,可以通过主页中显示的列表访问。
这就是我的路由器的样子:
var AppRouter = Backbone.Router.extend({
initialize: function(){
this.model = new model();
this.collection = new collection();
},
routes: {
"" : "showForm",
"post/:id" : "showPost"
},
showPost: function(id){
var curmodel = this.collection.get(id);
var post = new postView({model:curmodel});
post.render();
$(".maincontainer").html(post.el);
},
showForm : function(){
var qcView = new qcV({model:this.model, collection:this.collection});
qcView.render()
$(".maincontainer").html(qcView.el);
}
});
这是此列表中帖子的链接之一的样子
<h2><a id= "<%=_id%>" href="#post/<%=_id%>"><%=name%></h2></a>
我的第一个问题是:以这种方式使用基于哈希的 URL 链接页面是否危险?
我的第二个问题是:如果我单击主页中的某个链接,导航到帖子视图没有问题。我的 url 成功更改为 http://127.0.0.1:3000/#post/51ffdb93c29eb6cc17000034 之类的内容,并且呈现了该特定帖子的视图。但是,此时如果我刷新页面,或者如果我直接在我的 URL 栏中键入 http://127.0.0.1:3000/#post/51ffdb93c29eb6cc17000034,那么路由器中我的 showPost 方法中的 this.collection.get(id) 方法将返回 undefined。谁能帮我弄清楚为什么会这样?
我检查了几次,我的初始化方法都被调用了,我的集合和模型都成功创建了
【问题讨论】:
标签: javascript backbone.js backbone-routing