Я хочу вызвать из области Jquery (которая находится в том же классе) к той же функции класса / метода. Как я должен сделать?
Я старался:
displayTemplate.findWithAttr (действие ) ;
Или
this.findWithAttr (действие ) ;
Отклик
"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() {
//..
}
}
});
}
//...
}
}
2 ответа
Прежде чем войти в область действия 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() {
//..
}
}
});
}
Надеюсь, это помогло.
Вы можете использовать лямбда-выражения вместо вложенных функций. Одно из различий между ними заключается в том, что лямбда-выражения сохраняют родительский контекст, а не имеют собственный.
Так что для этого вы просто измените
"yes": function() {
К
"yes": () => {
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.