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);
参考
- browser history - Which one should I use? Backbone.js Router.navigate and window.location.hash - Stack Overflow
- javascript - Backbone route changed event - Stack Overflow
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式