使用jQuery、AMD和require.js处理事件
Event handling with jQuery, AMD and require.js
我是AMD和require.js的新手,并且几乎在一天多的时间里一直在努力解决一个小问题。我试过不同的方法,但不确定什么是正确的方法。我希望能从所有JavaScript大师那里得到一些反馈。
我正试图实现一个事件处理程序的文本框,将监听任何输入/更改。在事件处理程序中,我想更新当前在地图上显示的标记。所以,我定义了两个模块-开放的开放层和一个包含我的自定义代码显示地图,更新标记等。
自定义模块如下:
define('mymodule', [ 'open-layers', 'jquery', 'openstreetmaps','t5/core/console' ], function(
openLayers, $,openStreetMaps ,console) {
var init = function() {
}
var listenForChange = function(clientId) {
clientId = clientId;
var textBox = $(document.getElementById(clientId));
console.debug(textBox);
$('#addressLineTwo').on('change paste keypress input', function() {
console.debug(textBox);
console.debug('OnChange');
console.debug($(this));
console.debug($(textBox).val());
openstreetmaps.clearMarkersAndShowAddress();
});
}
return {
init: init,
listenForChange: listenForChange
};
});
问题是,当事件处理程序作为文本字段输入的结果被调用时,定义为"on"方法处理程序的函数中的openstreetmaps
变量是undefined
。
require(['openstreetmaps'], function(openstreetmaps) { openstreetmaps.clearMarkersAndShowAddress(newAddress);});
另外,如果我使用这样的结构,我如何管理变量和在所有闭包之间传递数据?内部闭包似乎不能访问外部闭包或函数中的变量。
非常感谢您的帮助和反馈。
其他模块的变量可以从事件处理程序中访问,您只需要将openStreetMaps
的define
函数参数更改为openstreetmaps
。这就是为什么额外的require
调用工作;您只需要将变量命名与所需的模块相匹配。
对于管理变量,只需通过从模块返回它们来公开所有公共变量,这些公共变量可以访问创建闭包的模块中定义的任何内容。每个模块只注册一次,所以你可以在每个模块中保留任何你想要的状态。
相关文章:
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- 弹出窗口-jQuery Mobile、Backbone.js和Require.js
- 在非SPA(单页应用程序)中使用Require.js和Backbone
- 在混合基本 URL 下动态加载 require.js 模块
- 使用Require.js按照依赖关系的顺序加载JavaScript
- 主干.js(具有 Require.js)变量/范围访问问题
- 加载文本分机.js插件与require.js
- 在 Firefox 中加载带有 require.js 的文本文件失败:“AccessControlException”
- using require.js with FB SDK
- Require JS with Knockout组件正在查找路径不正确的JS文件
- 在Require.js中,如果Require()是一个函数,那么Require.config()是如何存在的
- 为什么require.js似乎在初始页面加载时加载了我的所有模块
- 从哪里生成 require.js 文件
- 使用require.js后,如何通过简单的脚本引用访问jquery全局命名空间
- require.js:访问所有加载的模块
- require.js错误(topojson未加载)
- 有没有办法缩短Require.js's require statement?我是不是误解了怎么用它
- 我没有'我不了解require.js是如何处理加载路径的.每次定义模块时是否需要使用require.config
- require.js+backbone.js:如何构造具有初始化函数的模块
- Require.js中的Backbone.js模式