私はBackbone.jsでRails 3.2.3アプリを持っていて、私は自分のBackbone.historyでpushStateを使っています。Backbone.jsルートが起動されていません
問題
私はIDと予定を表示するには、「/ foo」で言って行くのリンクをクリックすると:私はすぐにRailsのルーターの前に見ることができます1、その後、バックボーンルータは最初のものになりますが、引き継ぎ、/ fooのルートがないと不平を言う。
マイBACKBONE.JSコードはここに私のバックボーンルータです。
これは同じページにあり、#app divの最後に 'foo'を付ける必要がありますが、それは決してありません。
バックボーンインデックスビューア
window.AppointmentListView = Backbone.View.extend({
template: JST["appointments/index"],
events: {
"click .foo": function(){Backbone.history.navigate("foo");},
},
comparator: function(appointment){
return appointment.get('topic');
},
initialize: function(){
this.collection.on('reset', this.addAll, this);
},
render: function(){
this.$el.html(this.template);
this.addAll();
return this;
},
addAll: function() {
this.collection.forEach(this.addOne, this);
},
addOne: function(appointment){
var appointmentView = new AppointmentView({model: appointment});
this.$el.append(appointmentView.render().el);
}
});
アプリ/資産/テンプレート/予定/ Index.jst.ejs
<h1>Appointments</h1>
<a href="/foo" class="foo">Say Foo</a>
<a href=appointments/add>Add</a>
<div id="app"></div>
それは私が履歴を保持することができますように私はpushStateを使用していましたおよび戻るボタンの機能。
Backbone.history.navigateはバックボーンルートを呼び出さず、代わりにRailsルートを呼び出します。これを修正するにはどうすればいいですか?
「予定/ 1」などのルートを受け入れ、制御を取るようにバックボーンを設定する必要がありますか、上記のようなBackbone.history.navigateコールでクリックイベントを使用する必要がありますか?
私は、pushStateの背後にある考えは、あなたがURLフラグメントを使う必要がないと思ったのですか? – map7
私がpushStateを削除し、 "#/ foo"にナビゲートする行を変更すると、それはすべて動作しますが、実際のURLではないURL断片があります。私はpushStateでこれを行う方法を探しています – map7
@ map7ああ、申し訳ありませんが、私はあなたが何を求めているのかよく分かりませんでした。私は自分の答えを更新しました – obmarg