RequireJS z jQuery Validation
Próbuję użyć RequireJS, aby dodać odwołania do moich plików skryptu sprawdzania poprawności jQuery. Mam 3 pliki skryptów zamiast zwykłych 1:
jquery.validate - biblioteka sprawdzania poprawności jqueryjquery.validate.unobtrusive - dodaje dyskretną walidację do biblioteki sprawdzania poprawności jquery (dzięki czemu można używać atrybutów danych i automatycznie je przewija). To zależy od jquery.validatejquery.validate.custom - dodaje moje własne niestandardowe metody sprawdzania poprawności i zależy od jquery.validate.unobtrusiveUstawiłem następującą konfigurację:
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']
}
});
Teraz mam następujący moduł:
define(['jquery', 'jquery.validate'], function($) {
alert('Yey!');
});
Jednak w pliku jquery.validate.custom pojawia się błąd informujący mnie, że dyskretna zależność nie została wprowadzona. Po debugowaniu za pomocą narzędzi przeglądarki i przejrzeniu karty sieci widzę, że z powodzeniem pobiera pliki jquery.validate.custom.js i jquery.validate.js, ale nawet nie próbuje pobrać jquery.validate.unobtrusive. plik js.
Byłbym wdzięczny, gdyby ktoś mógł mi pokazać, co robię źle. Dzięki
Edytować:
Próbowałem teraz:
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']
}
});
I działa poprawnie. Wypróbowałem również poniższe, ponieważ wydaje mi się, że wygląda lepiej:
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']
}
});
Ale to daje błąd limitu czasu.
Gdyby ktoś mógł wyjaśnić, dlaczego drugie rozwiązanie nie działa, byłoby świetnie. Dzięki