У меня проблема с маршрутизацией магистрали. Я вызываю Backbone.history.start() в индексе продуктов (localhost:3000/products). Маршруты:
'': 'product_index'
':id': 'product_show' (tag 'a' link 'localhost:3000/products#123')
':id/items/:item_id': 'item_show' (tag 'a' link 'localhost:3000/products#123/items/456')
Примечание: все теги имеют data-ajax = 'false' и имеют некоторую конфигурацию:
$(document).bind('mobileinit', function() {
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
});
Ошибка возникает, когда я нахожусь на странице «localhost/products#123» и нажимаю тег «a» на ссылку «localhost:3000/products#123/items/456». Он предупреждает «Ошибка загрузки страницы», затем URL-адрес автоматически изменяется на «localhost: 3000/123/items/456», а в консоли появляется ошибка: «GET localhost: 3000/123/items/456 404 (Not Found)».
Мой файл маршрутов:
class Braindu.Routers.Mobile extends Backbone.Router
initialize: (options) ->
@products = new Braindu.Collections.Products()
@products_view = new Braindu.Views.MobileProductsIndex(collection: @products, id_product_el:'product-index-page')
routes:
'' : 'product_index'
':id' : 'product_show'
':id/items/:item_id': 'item_show'
product_index: ->
@product_index_view.render()
product_show:(id) ->
$.mobile.changePage( "#product-show-page" , { reverse: false, changeHash: false } )
current_product_model = @product_index_view.product_collection.where({_id: id})[0]
if current_product_model != null && current_product_model != undefined
@product_index_view.render_current_product(current_product_model)
item_show:(id, item_id)->
console.log 'item showwwwwwwwwwwwwwwwwwwwwwww'
$.mobile.changePage( "#object-card-page" , { reverse: false, changeHash: false } )