Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript meteor助手函数、lambdas和词法_Javascript_Meteor_Lambda_Ecmascript 6 - Fatal编程技术网

Javascript meteor助手函数、lambdas和词法

Javascript meteor助手函数、lambdas和词法,javascript,meteor,lambda,ecmascript-6,Javascript,Meteor,Lambda,Ecmascript 6,g'day, 我读到《流星》在整个ecmascript 6中都很成功——我觉得很棒。。。“我再也不用写‘函数’”——所以很快就把一堆函数改成了lambdas。。。结果发现它不起作用:( 如果你在meteor中编写一个helper函数,你会得到在“this”属性中传递的数据上下文,但是当然,lambdas使用了词法this,所以我对这个问题的理解非常简单 问题是——对我来说不明显的是解决方案——你知道如何使用需要当前数据上下文的()=>符号来创建一个helper函数吗?它似乎只存在于“this”之

g'day, 我读到《流星》在整个ecmascript 6中都很成功——我觉得很棒。。。“我再也不用写‘函数’”——所以很快就把一堆函数改成了lambdas。。。结果发现它不起作用:(

如果你在meteor中编写一个helper函数,你会得到在“this”属性中传递的数据上下文,但是当然,lambdas使用了词法this,所以我对这个问题的理解非常简单


问题是——对我来说不明显的是解决方案——你知道如何使用需要当前数据上下文的()=>符号来创建一个helper函数吗?它似乎只存在于“this”之外的任何地方?

ECMAScript 2015没有反对
函数()
。箭头函数是而不是速记语法,它们有不同的语义,最明显的是,词法
绑定


箭头函数中不能包含上下文
,请改用标准函数。

使用速记将函数定义为对象属性:

Template.someTemplate.helpers({
  someHelper() {
    console.log(this);
  }
});
但是如果您确实想使用
()=>
语法,您可能会对使用
模板.currentData()
而不是
这个
感兴趣:

Template.someTemplate.helpers({
  someHelper: () => {
    console.log(Template.currentData());
  }
});
发件人:

模板.currentData()

在助手中,返回DOM节点的数据上下文,其中 使用了助手


太棒了-谢谢!我会试一试的。“function”关键字是我最不喜欢javascript的地方,所以把它完全从我的生活中抹去是我的主要目标:)因为问题是“给定这个词,你如何让meteor工作”—你说“它不能工作,因为这个词”。另一个答案完美地解决了这个问题。@DarrenOakey-你在评论中的措辞比你在帖子中使用的更清楚,但你是对的-我现在明白这就是你的意思。考虑到这一点,你对我的回答(“它不能工作…”)的解释是错误的。我的答案是,你不应该仅仅因为引入了箭头函数就停止使用
function()
。这是两个非常相似但不完全相同的表达式,它们都有优点和缺点。我确实同意你的看法,我的答案不是流星特有的,但我希望你能同意我的看法,它同样相关或正确。