ExigirJS com validação de jQuery
Eu estou tentando usar o RequireJS para adicionar as referências aos meus arquivos de script de validação do jQuery. Eu tenho 3 arquivos de script em vez do usual 1:
jquery.validate - A biblioteca de validação jqueryjquery.validate.unobtrusive - Isso adiciona uma validação discreta à biblioteca de validação do jquery (para que você possa usar atributos de dados e conectá-los automaticamente). Isso depende do jquery.validatejquery.validate.custom - Isso adiciona meus próprios métodos de validação não invasivos e depende do jquery.validate.unobtrusiveEu configurei a seguinte configuração:
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']
}
});
Agora eu tenho o seguinte módulo:
define(['jquery', 'jquery.validate'], function($) {
alert('Yey!');
});
No entanto, um erro é lançado no arquivo jquery.validate.custom, informando que a dependência não foi injetada. Depois de algumas depurações com as ferramentas do navegador e olhando para a aba de rede, eu posso ver que ele baixa com sucesso os arquivos jquery.validate.custom.js e jquery.validate.js, mas nem sequer tenta baixar o jquery.validate.unobtrusive. arquivo js.
Eu apreciaria se alguém pudesse me mostrar o que estou fazendo de errado. obrigado
Editar:
Eu tentei agora:
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']
}
});
E isso funciona corretamente. Eu também tentei o seguinte, como eu acho que parece melhor:
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']
}
});
Mas isso dá um erro de tempo limite.
Se alguém pudesse explicar por que a segunda solução não funciona, isso seria ótimo. obrigado