Почему `init` из shim в моей конфигурации require.js не вызывается?
Обновить:
Я писал небольшой модуль для решения этой проблемы токена csrf впозвоночник пока я не получил push-уведомление об ответе @ Луи.
Его ответ довольно элегантный и кажется хорошим, но я уйдуссылка к моемуbackbone.csrf Модуль github repo как раз для всех, кому это нужно.
================================================== ==================
я используюпозвоночник в качестве основы моего внешнего интерфейса вместе с моимДжанго бэкенд.
Я должен был настроить мойBackbone.sync
установить заголовок запроса CSRF для каждого отдельного запроса AJAX перед его отправкой для совместимости с системой защиты CSRF Django.
Так как я использовалrequire.js для модульной разработки JavaScript, я попытался настроить это вshim.init
изrequire.config
так что это переопределение будет запущено, как только Backbone загрузится в браузере:
<script>
var require = {
...
shim: {
'jquery': {'exports': 'jQuery'},
'backbone': {
'deps': ['underscore', 'jquery'],
'exports': 'Backbone',
'init': function(_, $) {
alert('NOT EVEN CALLED');
var originalSync = this.Backbone.sync;
this.Backbone.sync = function(method, model, options) {
options.beforeSend = function(xhr) {
xhr.setRequestHeader('X-CSRFToken', window.csrf_token);
}
return originalSync(method, model, options);
}
}
}
}
}
</script>
// Load require.js
<script src="require.js"></script>
Хотя Backbone успешно загружен, 'init' требуемой конфигурации не вызывается.
В чем проблема?