2012-04-28 2 views
2

Мой код выглядит следующим образом:Backbone.js маршруты не срабатывают правильно

var AppRouter = Backbone.Router.extend({ 

    _data: null, 
    _length: 0, 
    _index: null, 
    _todos: null, 

    routes: { 
     "*action": "index", 
     "category/:name": "hashcategory" 
    }, 

    initialize: function(options){ 
     this._data = options.data; 
     this._todos = new TodosCollection(options.data); 
     this._length = this._todos.length; 
     this._index = new CategoriesView({collection: this._todos}); 
    }, 

    index: function(){ 
     this._index.render(); 
    }, 

    hashcategory: function(name){ 
     console.log('started'); 
    } 
}); 

initializeRouter = function (router) { 
    Backbone.history.start({ pushState: true }); 
    $(document).on('click', 'a:not([data-bypass])', function (evt) { 

     var href = $(this).attr('href'); 
     var protocol = this.protocol + '//'; 

     if (href.slice(protocol.length) !== protocol) { 
      evt.preventDefault(); 
      router.navigate(href, true); 
     } 
    }); 
    return router; 
}; 


var start = function(){ 
    p = $.ajax({ 
     url: 'data/todolist.json', 
     dataType: 'json', 
     data: {}, 
     success: function(data) { 
      var approuter = initializeRouter(new AppRouter({data: data})); 
     } 
    });  
}; 

У меня есть <a> звено в моем HTML, который имеет href = "category/num1" атрибут объявления. Но каждый раз, когда я нажимаю ссылку, она всегда показывает security error в firebug. На самом деле, у меня просто одна страница index.html, то, что я хочу сделать, это добавить к ней строку, чтобы сделать фальшивую html-страницу, такую ​​как folder/index.html/category/num1, и все это будет отображаться на текущей странице. Но url, показанный мне, когда ссылка зависает, - folder/category/num1. Поскольку этот путь на самом деле не существует в моей папке, я думаю, именно поэтому он показывает ошибку безопасности.

Итак, как исправить это? Должен ли я создать другую html-страницу и соответствующую папку? Или я могу сделать всю маршрутизацию на одной странице index.html?

ответ

1

Попробуйте положить в HREF в #, как

href = "#category/num1" 
+0

ТНХ, URL-адрес близок к тому, что я ожидал, но соответствующий маршрут еще не правильно стрелять. – chaonextdoor

Смежные вопросы