#javascript #typescript #lit-element
#javascript #typescript #lit-элемент
Вопрос:
У меня проблема, когда, если я хочу добавить параметр к своему click
атрибуту, он вызывает функцию, как только она отображается
вот мой тестовый html:
return html`
<button class="menu-btn" @click="${this._OpenSubMenu(1)}>test</button>"
`;
}
И функция:
_OpenSubMenu(test:number) {
console.log("Hello")
}
Это выводится Hello
, как только страница отображается.
Итак, как я могу избежать этого, все еще добавляя параметр в свою функцию?
Ответ №1:
Вам нужно заставить вашу функцию возвращать функцию. Затем ваша функция click выполнит возвращенную функцию, и из-за закрытия все равно будет иметь доступ к параметрам.
например..
_OpenSubMenu(test:number) {
var that = this;
return function () {
console.log("Hello");
//test is also a closure so you can use here
//that will equal this
}
}
Если вы хотите получить доступ this
, вы также можете использовать функцию со стрелкой
_OpenSubMenu(test:number) {
return () => {
console.log("Hello");
//test is also a closure so you can use here
//this will also still be valid here
}
}
Комментарии:
1. спасибо за ответ, однако у этого есть недостаток, я не могу получить доступ к своим свойствам, поскольку они выходят за рамки? (т.е.) this.property = test
2. @MarcRasmussen Да, используйте версию функции со стрелкой, если вы хотите получить доступ
this
.. Если вы не можете использовать функции со стрелками, создайте замыкание otherthis
, .. Некоторые люди часто делаютvar that = this
это в качестве первой строки.