Javascript 聚合物内部函数不是函数错误
Javascript function inside polymer is not a function error
我在聚合物中定义了一个 javascript 函数:
myTest(arg) {<do stuff here>}
在此函数中,根据某些条件,我想将聚合物模板中定义的按钮的 onclick
更改为其他函数。为此,我正在做 document.getElementById('myButton').onclick = function() {myTest('someArg')};
我遇到的问题是,当调用上述行时出现错误
Uncaught TypeError: myTest is not a function.
如果我在声明函数时尝试使用 function 关键字,编译器会抱怨
Unexpected token. A constructor, method, accessor, or property was expected.
更改按钮的 onclick 函数的正确语法是什么?
如果没有看到完整的源代码示例,很难确定,但听起来您面临的问题与 JavaScript not inferring this
as the context for以与例如相同的方式调用实例方法Java 确实如此。让事情变得更复杂的是,this
不会在您为点击侦听器创建的 function
中包含预期值。
一种解决方法是使用箭头函数,因为它们不会重新定义执行上下文:
document.getElementById('myButton').onclick = () => { this.myTest('someArg') };
另一种方法是将 this
显式捕获到一个单独的变量中,然后在函数内部使用该变量:
var self = this;
document.getElementById('myButton').onclick = function() { self.myTest('someArg') };
我在聚合物中定义了一个 javascript 函数:
myTest(arg) {<do stuff here>}
在此函数中,根据某些条件,我想将聚合物模板中定义的按钮的 onclick
更改为其他函数。为此,我正在做 document.getElementById('myButton').onclick = function() {myTest('someArg')};
我遇到的问题是,当调用上述行时出现错误
Uncaught TypeError: myTest is not a function.
如果我在声明函数时尝试使用 function 关键字,编译器会抱怨
Unexpected token. A constructor, method, accessor, or property was expected.
更改按钮的 onclick 函数的正确语法是什么?
如果没有看到完整的源代码示例,很难确定,但听起来您面临的问题与 JavaScript not inferring this
as the context for以与例如相同的方式调用实例方法Java 确实如此。让事情变得更复杂的是,this
不会在您为点击侦听器创建的 function
中包含预期值。
一种解决方法是使用箭头函数,因为它们不会重新定义执行上下文:
document.getElementById('myButton').onclick = () => { this.myTest('someArg') };
另一种方法是将 this
显式捕获到一个单独的变量中,然后在函数内部使用该变量:
var self = this;
document.getElementById('myButton').onclick = function() { self.myTest('someArg') };