나는 Backbone.js가있는 Rails 3.2.3 앱이 있으며 내 Backbone.history에는 pushState를 사용하고 있습니다.Backbone.js 경로가 트리거되지 않습니다.
문제점
내가 ID와 약속을 보여주는 '/ foo는'말을가는 링크를 클릭하면 : 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는 내 백본 경로를 호출하지 않고 대신 레일 경로를 호출합니다. 이 문제를 해결하려면 어떻게해야합니까?
'약속/1'과 같은 경로를 허용하고 제어권을 받도록 백본을 설정해야합니까, 아니면 위와 같이 Backbone.history.navigate 호출로 클릭 이벤트를 사용해야합니까?
pushState의이면에있는 전체 아이디어가 URL 조각을 사용할 필요가 없다고 생각 했나요? – map7
pushState를 제거하고 네비게이션 줄을 "#/foo"로 변경하면 모두 작동하지만 URL이 실제 URL이 아닌 부분으로 변경됩니다. pushState를 사용하여이 작업을 수행 할 방법을 찾고 있습니다 – map7
@ map7 아, 미안하지만, 당신이 무엇을 묻고 있는지 잘 알지 못했습니다. 내 대답을 업데이트했습니다 – obmarg