backbone.js模块定义问题
backbone.js Issue with module defining
我按照这个模式来组织我的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'));
这似乎很好,但如果尝试定义聊天模块并稍后调用它,我会出现以下错误:
Uncaught TypeError: Property 'Collection' of object #<Object> is not a function
我认为当chat-module.js还不可用时,jQuery ready会调用该错误。我该如何解决这个问题?
您的代码创建一个对象并将其分配给全局变量chat
,该变量具有module
函数作为属性:
var chat = {
module: function...
};
但当你使用它时,你会使用Application.module
而不是chat.module
。
Application.module('Chat')
和
var foo = new Application.module('Chat').Collection();
在我看来,您的chat
变量应该称为Application
。
还要注意,您使用module
的方式有两种,一种是使用new
,另一种是不使用没有将是基于您的代码的正确使用。它将双向工作,因为module
返回一个函数(它是一个对象),因此这将覆盖正常的new
行为,但这意味着使用new
没有任何用途,并且会误导阅读代码的人。
相关文章:
- 如何消除代码中的未定义和其他问题
- 组件生命周期问题/无法处理未定义的问题
- 自定义滑块问题
- 自定义Jquery css下拉菜单问题
- 动态加载的自定义javascript/jQuery/HTML5音频播放器的问题
- JavaScript/jQuery JSON数组问题-值为未定义
- 谷歌地图自定义标记问题
- 在javascript中调用自定义谷歌搜索标签时出现问题
- 使用Breeze脱机数据时出现未定义的问题不是函数
- 从谷歌地图自定义控件打开离子模态时遇到问题
- 在自定义元素中扩展 HTMLCanvasElement 问题
- 在具有CONTENT标记的自定义元素中使用SELECT标记时出现问题
- Magento自定义选项-清除输入字段问题
- 访问模板中的属性时出现问题-除'name'显示错误'没有定义[attributename];
- 如何解决jquery自定义定时器问题
- 在wordpress中向自定义php模板添加滑块时出现问题
- 在构建自定义网页刮刀时遇到问题
- JQuery Mobile自定义下拉列表问题
- AJAX自定义错误处理代码问题
- 困惑为什么这个javascript导致我的问题.定义了类和原型方法