Javascript meteor助手函数、lambdas和词法
g'day, 我读到《流星》在整个ecmascript 6中都很成功——我觉得很棒。。。“我再也不用写‘函数’”——所以很快就把一堆函数改成了lambdas。。。结果发现它不起作用:( 如果你在meteor中编写一个helper函数,你会得到在“this”属性中传递的数据上下文,但是当然,lambdas使用了词法this,所以我对这个问题的理解非常简单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”之
问题是——对我来说不明显的是解决方案——你知道如何使用需要当前数据上下文的()=>符号来创建一个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()
。这是两个非常相似但不完全相同的表达式,它们都有优点和缺点。我确实同意你的看法,我的答案不是流星特有的,但我希望你能同意我的看法,它同样相关或正确。