Circular Dependency in BackboneJS

发布时间: 2015-12-12 20:45:34 作者: 大象笔记

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);

参考

我是一名山东烟台的开发者,联系作者