Circular Dependency in BackboneJS

文章目录

    Uncaught Error: Module name “router” has not been loaded yet for context: _

    今天写一个简单新建页面时,遇到上面这个错误。报错来自于 views/new_item.js 的

    var Router = require('router');
    

    确认了一下路径是对的,router.js 也加载成功了,依然报错。对比 router.js 的代码

    define(function(require) {
        var Backbone = require('backbone');
        var NewItem= require('views/new_item');
    
        var AdminRouter = Backbone.Router.extend({
    	...
            newItem: function() {
                var newItem= new NewItem();
                newItem.render();
            },
    	...
        });
    

    会发现,new_item.js 与 router.js 形成了 Circular Dependency ( ̄▽ ̄)”

    为何要在 View 中使用 Router 呢

    以新建为例,在创建完新条目之后,我想自动返回首页,即

    router.navigate('/', {trigger: true});
    

    这便是 Circular Dependency 的罪魁祸首

    如何避免 router 造成的 Circular Dependency 呢

    Backbone.history.navigate('/', true);
    

    参考

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式