对不起,如果我重复这个问题,但我在requireJS中很新,我不完全理解它的工作方式。
我正在努力实现亚马逊式导航,并在元素上进行对角线移动。我找到了一个jQuery插件(https://github.com/kamens/jQuery-menu-aim),但我想在requireJS的帮助下实现它。
通常,您只需使用<script>
标记(Jquery和插件)包含所有必需的脚本。然后,您可以找到导航并在激活/取消激活子菜单时指定一些功能。例如:
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="../jquery.menu-aim.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script>
var $menu = $(".dropdown-menu");
// jQuery-menu-aim: <meaningful part of the example>
// Hook up events to be fired on menu row activation.
$menu.menuAim({
activate: activateSubmenu,
deactivate: deactivateSubmenu
});
function activateSubmenu(row) {//do something}
function deactivateSubmenu(row) {//do someting else)
</script>
以requireJS方式。在 navigation.js 文件中,我在开头需要menu-aim插件,并试图像这样实现它:
var menuAim = require('lib/menu-aim');
// some code
var $menuT = $('#nav-main-deep');
$menuT.menuAim({
activate: activateSubmenu,
deactivate: deactivateSubmenu
});
function activateSubmenu(){
console.log('test1');
}
function deactivateSubmenu() {
console.log('test2');
}
我把整个插件 menu-aim.js 放在:
之间define(function () {
//whole menu-aim plugin
});
可能这不是运行requireJS插件的方式,因为它什么都不做(我试着做一些控制台日志)。我试着看看requireJS doc但是我还是不明白怎么做对.. 非常感谢您的建议..
答案 0 :(得分:2)
From the GitHub code,看起来jQuery-menu-aim
没有使用通用模块定义,因此需要来自RequireJS配置的一些帮助。
shim
可以帮助RequireJS对依赖项进行排序,因为这是一个jQuery插件,必须首先加载jQuery并传递给它。点击此处查看more information on RequireJS shims。
将此代码添加到RequireJS配置文件
requirejs.config({
shim: {
'menu-aim': {
deps: ['jquery']
}
}
});
当你打电话
require('lib/menu-aim', function() {
// put your menu code here
});
将加载jQuery和菜单插件。