流星可变范围
Meteor variable scope
我对JavaScript相当陌生,甚至对Meteor也很陌生,我对我所知道的变量范围和现实有点困惑。所以我有了Meteor事件助手:
Template.test.events({
'click .selector': function (e) {
e.preventDefault();
var someArray = [1,2,3,4];
var someVariable = "jquery slector data";
console.log(someVariable); //this works as expected
someArray.each(function(index, el) {
console.log(someVariable); //not defined?
})
}
})
我的印象是,在我的.每个函数之外声明的任何变量都可以在它内部使用?然而,我还没有被定义。这是Meteor特有的东西还是JavaScript?另外,如何在不使变量全局化的情况下,使变量在.each函数中可访问?我不认为在.each循环中定义我的变量是理想的,因为这意味着要多次访问DOM。
谢谢。
问题似乎是您试图使用each()
方法,而Array.prototype
上不存在该方法。我相信你在找Array.prototype.forEach()
。Underscore的_.each(array, callback)
方法也可以工作,并且与较旧的浏览器更兼容。
这应该有效:
Template.test.events({
'click .selector': function (e) {
e.preventDefault();
var someArray = [1,2,3,4];
var someVariable = "jquery slector data";
console.log(someVariable);
someArray.forEach(function(val, index) {
console.log(someVariable);
});
}
});
或者,为了兼容性:
_.each(someArray, function(val, index) {
console.log(someVariable);
})
我相信您的困惑源于使用jQuery的$.each()
方法,该方法与原生forEach
和Undercore的_.each()
不同。首先,jQuery有一个不同的参数顺序(请注意,我切换了代码中参数的顺序)。通常,我建议将Undercore用于与集合相关的函数,并将jQuery主要用于DOM操作。
相关文章:
- 正在全局范围中查找JavaScript函数
- 如何通过数组更新角度子范围
- 如何使用铁流星与流星的默认路线
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- 在流星上使用微信js-sdk时出现拒绝权限错误
- HTML范围:动态设置值属性
- 流星中DOM的繁殖
- "实例范围”;TypeScript类的getter/setter
- jquery日期选择器年份范围默认值
- Jpgraph:如何手动设置X轴和Y轴的范围
- 在对象数组中查找多个值的d3范围
- 动态加载angularjs并生成控制器和范围
- 保存串行端口列表与流星
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 流星的全球可变范围
- 流星:发布动态请求的项目范围
- 流星:如何让 JS 日期范围选择器调整 API 调用日期参数
- 流星.流范围问题
- 流星可变范围
- 写流星包时可变范围