我想从Jquery范围(在同一类中)调用相同的类函数/方法。我该怎么办?
我尝试过:
displayTemplate.findWithAttr(action);
或
this.findWithAttr(action);
响应
“ this.findWithAttr不是函数”
这是我的代码。
class displayTemplate{
findWithAttr(action) {
//to do something with action
}
router(action){
if(action == "something"){
$( "#confirm_dialog_msg" ).text("text?");
$( "#dialog-confirm" ).dialog({
buttons: {
"yes": function() {
$( this ).dialog( "close" );
//how in this area call to "findWithAttr" function above?
this.findWithAttr(action);
},
"No": function() {
//..
}
}
});
}
//...
}
}
答案 0 :(得分:1)
在进入函数的JQuery范围之前,先声明一个这样的变量
var self = this;
然后只需执行self.findWithAttr
,那应该可以工作。
类似:
router(action){
if(action == "something"){
var self = this;
$( "#confirm_dialog_msg" ).text("text?");
$( "#dialog-confirm" ).dialog({
buttons: {
"yes": function() {
$( this ).dialog( "close" );
//how in this area call to "findWithAttr" function above?
self.findWithAttr(action);
},
"No": function() {
//..
}
}
});
}
希望这会有所帮助。
答案 1 :(得分:0)
您可能要使用lambda表达式而不是嵌套函数。 它们之间的区别之一是lambda表达式保留父上下文而不是拥有自己的上下文。
为此,您只需更改
"yes": function() {
到
"yes": () => {