Я следую за this шаблоном для организации приложения js.backbone.js Проблема с модулем, определяющим
Как видно из примера, наше приложение должно иметь единственную точку входа. Файл application.js выполняет эту работу.
// Filename: application.js
var chat = {
// Create this closure to contain the cached modules
module: function() {
// Internal module cache.
var modules = {};
// Create a new module reference scaffold or load an
// existing module.
return function(name) {
// If this module has already been created, return it.
if (modules[name]) {
return modules[name];
}
// Create a module and save it under this name
return modules[name] = { Views: {} };
};
}()
};
// Using the jQuery ready event is excellent for ensuring all
// code has been downloaded and evaluated and is ready to be
// initialized. Treat this as your single entry point into the
// application.
jQuery(function($) {
$(document).ready(function(){
var foo = new Application.module('Chat').Collection();
});
});
// Filename: chat-module.js
(function(chat){
chat.Model = Backbone.Model.extend({ ... }),
chat.Collection = Backbone.Collection.extend({ ... }),
})(Application.module('Chat'));
кажется хорошо, но если попытаться определить модуль чата, например, и вызвать его позже я следующее сообщение об ошибке:
Я думаю, что из-за ошибки JQuery готов, когда чат вызываемой программы-module.js пока недоступно. Как я могу решить эту проблему?
Извините за свою ошибку, мое имя приложения - «чат». У меня есть следующая последовательность загрузки скриптов: 1. application.js 2. chat-module.js. Поэтому jQuery готов к запуску, когда chat-module.js пока недоступен. Но я получаю этот пример из упомянутого выше учебника. – Erik
@ Эрик: Я думаю, вы неправильно поняли мою точку зрения. В 'application.js' вы создаете переменную, называемую' chat', а не 'Application'. Если вы измените 'var chat = ...' на 'var Application = ...', это может устранить вашу проблему. –