require.js-未定义的模块作为参数传递以定义回调
require.js - undefined modules passed as arguments to define callback
我的应用程序需要以下js设置:
app.js
require.config({
paths: {
jquery: '../thirdparty/jquery-1.9.1.min',
moment: '../thirdparty/moment',
spinningwheel: '../thirdparty/datepicker/spinningwheel',
handlebars: '../thirdparty/handlebars',
colorgenerator: '../usercolors',
baseconfig: '../config' },
shim: {
'baseconfig': [],
'spinningwheel': {
deps: [],
exports: 'SpinningWheel'
},
'handlebars': {
deps: [],
exports: 'Handlebars'
}
}
});
require(['jquery', 'dom', 'helpers', 'actions', 'history', 'store'], function ($, dom, helpers, actions, hist, store) {
//all good on the home front at this point
//all modules loaded properly
history.render();
})
history.js
define(['renderview'], function (renderview) {
//all good here, render view is loaded properly
return {
render: function () {
renderview({...});
}
};
})
renderview.js
define(['jquery', 'helpers', 'dom'], function ($, helpers, dom) {
function renderView(view) {
var template = helpers.getTemplate(); //ERROR: helpers is undefined!
}
return renderView;
});
helpers.js
define(['jquery', 'handlebars', 'history', 'dom', 'colorgenerator'], function ($, Handlebars, history, dom, ColorGenerator) {
var helpers = {};
helpers.getTemplate = function () {
//do stuff
};
return helpers;
});
因此,正如您所看到的,helpers在inital app.js回调中加载得很好,但当我进入renderview.js时,它是未定义的。示例中的依赖数组正是我实际代码中的内容,但是我已经编辑了所有看起来不相关的代码。你知道为什么在app.js中可以很好地加载助手而在renderview.js中不能加载吗?这是循环依赖关系吗?在我看来不是这样,但我今天可能已经做得太久了:)
感谢您的帮助或建议!
添加当前解决方案,尽管我不知道为什么需要这样做:)
define(['require', 'jquery', 'dom'], function (require, $, dom) {
function renderView() {
//responsible for rendering our view
var helpers = require('helpers');
var history = require('history');
var v = history.get();
...
tmpl = helpers.getTemplate(v.template);
...
}
return renderView;
});
因此,如果不在回调内部执行require,而不是将它们指定为依赖项,我就无法正确加载这些模块。我很想了解为什么会这样…
考虑到问题和您的解决方案,您的需求调用中似乎有一个循环依赖项。也许您在helper
模块中需要的一些模块也需要helpers
模块。
相关文章:
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 如何将自定义参数传递到FullCalendar事件提要
- 为什么我传递给函数的参数未定义
- 将对象作为参数传递后的未定义属性
- 窗口、文档、数学、未定义作为类实例化的参数传递
- 如何在使用 eval() 评估 JavaScript 时将回调函数定义作为参数传递
- 如何将返回响应的预定义 JavaScript 回调作为参数传递到函数中
- 如何将参数传递给在表单标记外部定义的 javascript 函数
- 条带结账.js - 将自定义参数传递给令牌回调
- require.js-未定义的模块作为参数传递以定义回调
- Javascript isNaN在作为参数传递时返回未定义
- 传递给闭包的角度参数未定义
- 将自定义javascript对象属性作为参数传递到要更新的函数中
- "这个“;当函数作为链中的参数传递时未定义
- 在javascript中,如何区分没有参数传递和未定义参数传递
- 将额外的(自定义)参数传递给引导模态
- Javascript变量作为参数传递给函数时变为未定义
- 在需要时传递参数来定义函数
- 如何检查JavaScript的定义和参数传递
- Angularjs.我如何将变量作为参数传递给自定义过滤器