Backbone.js - 导航时出现 404 jQuery 错误

Posted

技术标签:

【中文标题】Backbone.js - 导航时出现 404 jQuery 错误【英文标题】:Backbone.js - 404 jQuery error on navigate 【发布时间】:2014-10-09 09:30:10 【问题描述】:

导航没有按我的预期工作,当我触发 goToTournament(见下文)时,当前视图只是重新渲染,我在控制台上收到 jQuery 404 not found 错误。 URL 正在适当更改,并且正在触发正确的路由方法。

// js/views/home.js

define([
    'jquery',
    'jquerym',
    'underscore',
    'backbone',
    'models/tournaments/featured',
    'collections/home',
    'text!/templates/home.html'
], function($, JQM, _, Backbone, FeaturedModel, HomeCollection, homeTemplate) 
    var HomeView = Backbone.View.extend(

        el: $('#site-main'),

        events: 
            'click .tournament': 'goToTournament'
        ,

        initialize: function() 
            this.render();
        ,

        render: function() 
            var homeCollection = new HomeCollection();
            homeCollection.fetch(
                success: function() 
                    var data = tournaments: homeCollection.toJSON();
                    var compiledTemplate = _.template(homeTemplate, data);
                    $('#site-main').html(compiledTemplate);
                    $('.main-content').fadeTo(500, 1);
                    return this;
                
            );
        ,

        goToTournament: function(e) 
            this;
            var t_id = $(e.currentTarget).data('id');
            var router = new Backbone.Router();
            router.navigate('tournament/' + t_id, trigger: true)
        
    );
    return HomeView;
);


// js/router.js

define([
    'jquery',
    'underscore',
    'backbone',
    'views/home',
    'views/tournament',
    'collections/tournament'
], function($, _, Backbone, HomeView, TournamentView, TournamentCollection) 

    var AppRouter = Backbone.Router.extend(
        routes: 
            '': 'home',
            'tournament/:id': 'tournament'
        
    );

    var initialize = function() 
        var app_router = new AppRouter;

        app_router.on('route:home', function() 
            var homeView = new HomeView();
        );

        app_router.on('route:tournament', function(id) 
            var tournament = new TournamentCollection( id: id );
            tournament.fetch(
                success: function() 
                    var tournamentView = new TournamentView(collection: tournament);
                
            );
        );

        Backbone.history.start();
    ;

    return 
        initialize: initialize
    ;
);

【问题讨论】:

【参考方案1】:

我通过完全禁用 jquery mobile 的加载方法使其正常工作。我制作了一个jqm-config.js 文件,并确保它在 jquery mobile 本身之前被调用。

【讨论】:

以上是关于Backbone.js - 导航时出现 404 jQuery 错误的主要内容,如果未能解决你的问题,请参考以下文章

Backbone.js:在视图之间导航 - 销毁和重新创建

如何使用 Backbone.js 增强多语言网站导航?

春季注销时出现错误 404

backbone.js实战之导航控制器学习笔记

php - 实时部署时出现 Laravel 404 错误

Spring Security:注销时出现 404