【发布时间】:2021-06-28 19:25:30
【问题描述】:
为简洁起见删除了一些代码...
基本的简单元素
@customElement("simple-el")
export class SimpleEl extends LitElement {
@property() user = "joe";
render() {
return html`<p>Hello, ${this.user}!</p>`;
}
}
调用元素
import "./scratch.ts";
@customElement("doos-main")
export class Doos extends LitElement {
@property() selName = "JOHN";
constructor() {
super();
}
render() {
return html`<link rel="stylesheet" href="../css/bulma.min.css" />
<doos-nav token="${this.token}"></doos-nav>
<simple-el user="${this.selName}"></simple-el>
//this displays a button and calls _buttonClick correctly
${this.renderView(this.view)}
<doos-footer name="FOOTER"></doos-footer>`;
}
_buttonClick(e: Event) {
console.log(e);
this.selName = "CHANGED!";
}
}
当我单击按钮时,我更改了selName 的属性值,我的想法是SimpleElement.user 绑定到selName。所以更改selName 应该将视图显示为Hello CHANGED!!
但是这不起作用。我得到的是原版:Hello JOHN!
我也试过打电话给async/await this.requestUpdate();
我的想法和/或实施是否错误?
编辑: 我可能应该补充一点,我正在使用 deno 的捆绑命令来构建我的 JS。
deno 包 --unstable --watch -c ./tsconfig.json ./mod.ts ./mod.js
这里是 tsconfig:
{
"compilerOptions": {
"lib": ["dom", "deno.ns"]
}
}
【问题讨论】:
-
我认为看起来不错。你确定
this在_buttonClick中引用了Doos? -
它在类定义中,所以我认为我在这里得到了正确的范围,但也许我可以花一些时间来验证
-
您能否在
_buttonClick中控制台登录this以确保绑定正确?如果没有,您能否分享您对this.renderView(this.view)的实现,以便更容易发现您可能遇到问题的地方?另外,你用什么来编译你的装饰器?我知道有时 babel 会在这上面丢球,并且没有正确关联更新流程。 -
属性更改后需要使用
this.requestUpdate。看到这个jsabarinath.wordpress.com/2020/01/19/…
标签: typescript lit-element deno lit-html