使用 ecmascript 时无法访问流星
unable to access meteor this when using ecmascript
当使用 meteor 和 ecmascript 的箭头符号时,使用 'this' 访问文档中描述的值总是失败。例如:
Template.temp.onCreated(()=> {
this.var = new ReactiveVar("")
})
然后通过以下方式访问它:
Template.instance().var
总是失败。这在流星、客户端或服务器端几乎所有 'this' 的使用中都是一致的。
从客户端检查时,我可以看到 "this" 被编译成“_this”,这总是导致代码失败。
代码编译成:
_this = this
Template.temp.onCreated(function() {
_this.var = new ReactiveVar("")
})
如有任何建议,我们将不胜感激。
这是因为箭头函数在创建时绑定到作用域。在您的情况下,在创建时范围是全局的,因此您的函数的范围是全局范围。
总之,这种行为是设计使然的正确行为。
你不应该在不合适的时候使用箭头函数。节省输入几个字符不只是"short-hand"。
当使用 meteor 和 ecmascript 的箭头符号时,使用 'this' 访问文档中描述的值总是失败。例如:
Template.temp.onCreated(()=> {
this.var = new ReactiveVar("")
})
然后通过以下方式访问它:
Template.instance().var
总是失败。这在流星、客户端或服务器端几乎所有 'this' 的使用中都是一致的。 从客户端检查时,我可以看到 "this" 被编译成“_this”,这总是导致代码失败。
代码编译成:
_this = this
Template.temp.onCreated(function() {
_this.var = new ReactiveVar("")
})
如有任何建议,我们将不胜感激。
这是因为箭头函数在创建时绑定到作用域。在您的情况下,在创建时范围是全局的,因此您的函数的范围是全局范围。
总之,这种行为是设计使然的正确行为。
你不应该在不合适的时候使用箭头函数。节省输入几个字符不只是"short-hand"。