アプリケーションに 1 つのメイン ホームページと、ホームページに表示されるリストからアクセスできる各投稿用の別のページがあります。
これは私のルーターがどのように見えるかです:
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);
}
});
これは、このリストの投稿へのリンクの 1 つがどのように見えるかです
<h2><a id= "<%=_id%>" href="#post/<%=_id%>"><%=name%></h2></a>
私の最初の質問は次のとおりです: この方法でページをハッシュベースの URL にリンクするのは危険ですか?
私の 2 番目の質問は次のとおりです。ホームページのリンクの 1 つをクリックすると、投稿ビューに移動するのに問題はありません。私のURLは次のように正常に変更されhttp://127.0.0.1:3000/#post/51ffdb93c29eb6cc17000034
、その特定の投稿のビューがレンダリングされます。ただし、その時点でページを更新するかhttp://127.0.0.1:3000/#post/51ffdb93c29eb6cc17000034
、URL バーに直接入力するthis.collection.get(id)
と、ルーターの showPost メソッドのメソッドが を返しますundefined
。これが事実である理由を理解するのを手伝ってくれる人はいますか?
初期化メソッドが両方とも呼び出されることを数回確認し、コレクションとモデルが正常に作成されました