2

私のコードは次のとおりです。

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ファイアバグが表示されます。実際、私はindex.htmlページを1つだけ持っています。私がやりたいのは、それに文字列を追加して、のような偽のhtmlページを作成することです。これfolder/index.html/category/num1で、すべてが現在のページにレンダリングされます。しかし、リンクがホバーされたときに表示されるURLはですfolder/category/num1。このパスは実際には私のフォルダに存在しないため、セキュリティエラーが表示されるのはそのためだと思います。

では、どのように修正すればよいですか?別のHTMLページと対応するフォルダを作成する必要がありますか?または、すべてのルーティングを1つのindex.htmlページで作成できますか?

4

1 に答える 1

1

#次のように、hrefにを入れてみてください

href = "#category/num1"
于 2012-04-28T03:39:13.527 に答える