【发布时间】:2013-06-07 15:24:16
【问题描述】:
我正在尝试使用 RequireJS 来添加对我的 jQuery 验证脚本文件的引用。我有 3 个脚本文件,而不是通常的 1 个:
- jquery.validate - jquery 验证库
- jquery.validate.unobtrusive - 这为 jquery 验证库添加了不显眼的验证(因此您可以使用数据属性并自动将它们连接起来)。这取决于 jquery.validate
- jquery.validate.custom - 这添加了我自己的自定义非侵入式验证方法,并且依赖于 jquery.validate.unobtrusive
我已经设置了以下配置:
require.config({
paths: {
'jquery': 'Scripts/jquery-1.8.3.min',
'jquery.validate': 'Scripts/jquery.validate.custom'
},
shim: {
'Scripts/jquery.validate': ['jquery'],
'Scripts/jquery.validate.unobtrusive': ['jquery', 'Scripts/jquery.validate'],
'Scripts/jquery.validate.custom': ['jquery', 'Scripts/jquery.validate.unobtrusive']
}
});
现在我有以下模块:
define(['jquery', 'jquery.validate'], function($) {
alert('Yey!');
});
但是在 jquery.validate.custom 文件中抛出了一个错误,告诉我未注入不显眼的依赖项。在使用浏览器工具进行一些调试并查看网络选项卡后,我可以看到它成功下载了 jquery.validate.custom.js 和 jquery.validate.js 文件,但它甚至没有尝试下载 jquery.validate.unobtrusive。 js文件。
如果有人能告诉我我做错了什么,我将不胜感激。谢谢
编辑:
我现在已经试过了:
require.config({
paths: {
'jquery': 'Scripts/jquery-1.8.3.min',
'jquery.validate': 'Scripts/jquery.validate.custom'
},
shim: {
'Scripts/jquery.validate': ['jquery'],
'Scripts/jquery.validate.unobtrusive': ['jquery', 'Scripts/jquery.validate'],
'jquery.validate': ['jquery', 'Scripts/jquery.validate.unobtrusive']
}
});
而且它工作正常。我还尝试了以下方法,因为我认为它看起来更好:
require.config({
paths: {
'jquery': 'Scripts/jquery-1.8.3.min',
'jquery.validate': 'Scripts/jquery.validate.custom',
'jquery.validate.core': 'Scripts/jquery.validate',
'jquery.validate.unobtrusive': 'Scripts/jquery.validate.unobtrusive'
},
shim: {
'jquery.validate.core': ['jquery'],
'jquery.validate.unobtrusive': ['jquery', 'jquery.validate.core'],
'jquery.validate': ['jquery', 'jquery.validate.unobtrusive']
}
});
但这会产生超时错误。
如果有人能解释为什么第二种解决方案不起作用,那就太好了。谢谢
【问题讨论】:
标签: javascript jquery jquery-validate requirejs unobtrusive-validation