我正在使用 LitElement 和 lit-html 进行培训。我正在尝试使用函数和事件侦听器制作复杂的模板。我有一个用于模板模块的模块,另一个用于我使用模板的一个组件。我的按钮模板有问题,我将函数作为参数传递,当我单击按钮时调用该函数。这有效:它进行了调用,但参考this
丢失了。我认为一个可能的原因可能是箭头函数,所以我重写了这个函数:
let timerElementOperation = function(operationTimer, operation,that){
operationTimer.bind(that);
return html` <button @click=${function(){operationTimer()}}>${operation}</button> `;
}
但问题仍然存在。发生了什么?
//timer-element.js
class TimerElement extends LitElement{
...
static get properties(){
return {
running: { type: Boolean, reflect: true}
};
}
render(){
let partialTemplate;
if( this.isPausable(this.running, this.finished) && this.time > 0 ){
partialTemplate = Template.timerElementOperation(this.pause, 'pause');
} else if(!this.running && this.time > 0){
partialTemplate = Template.timerElementOperation(this.resume,'resume');
}
pause(){
this.running = false; // this is lost.
}
}
//timer-templates.js
import {html} from '@polymer/lit-element';
let timerElementOperation = (operationTimer, operation) => {
return html` <button @click=${() => operationTimer()}>${operation}</button> `;
}
export timerElementOperation;