用于更改 Javascript 中模板字符串中的复选框的三元代码
ternary code to change checkbox in template string in Javascript
我正在研究聚合物和光元素。在渲染函数中,我有一个模板字符串如下:
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
<input
type="checkbox"
checked="${this.todoItem.done} ? 'true' : 'false'"
@click="${this.changeStatus}"
/>
</li>
`;
}
我知道这行不通,因为根据几个 Whosebug 的答案,您输入 checked
等于的任何值都会将其标记为已选中。
如果我这样做:
<input type="checkbox" ${this.todoItem.done} ? 'checked' : ''" @click="${this.changeStatus}"/>
我收到一个错误
TypeError: Failed to set the 'currentNode' property on 'TreeWalker':
The provided value is not of type
您的三进制代码目前不是 运行,它们被用于包含字符串的“”括起来。用 {} 将三元代码括起来。它会起作用。
{${this.todoItem.done} ? 'true' : 'false'}
而不是
"${this.todoItem.done} ? 'true' : 'false'"
关注此 link 了解更多详情
https://reactjs.org/docs/conditional-rendering.html
按照文档进行操作后,我找到了答案:我必须使用 html
https://lit-element.polymer-project.org/guide/templates。以下代码有效。
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
${this.todoItem.done
? html`
<input type="checkbox" checked @click="${this.changeStatus}" />
`
: html`
<input type="checkbox" @click="${this.changeStatus}" />
`}
</li>
`;
}
更新
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
${html`
<input type="checkbox" ?checked="${this.todoItem.done}" @click="${this.changeStatus}" />
`}
</li>
`;
}
更新 V2
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
<input type="checkbox" ?checked="${this.todoItem.done}" @click="${this.changeStatus}" />
</li>
`;
}
我正在研究聚合物和光元素。在渲染函数中,我有一个模板字符串如下:
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
<input
type="checkbox"
checked="${this.todoItem.done} ? 'true' : 'false'"
@click="${this.changeStatus}"
/>
</li>
`;
}
我知道这行不通,因为根据几个 Whosebug 的答案,您输入 checked
等于的任何值都会将其标记为已选中。
如果我这样做:
<input type="checkbox" ${this.todoItem.done} ? 'checked' : ''" @click="${this.changeStatus}"/>
我收到一个错误
TypeError: Failed to set the 'currentNode' property on 'TreeWalker': The provided value is not of type
您的三进制代码目前不是 运行,它们被用于包含字符串的“”括起来。用 {} 将三元代码括起来。它会起作用。
{${this.todoItem.done} ? 'true' : 'false'}
而不是
"${this.todoItem.done} ? 'true' : 'false'"
关注此 link 了解更多详情 https://reactjs.org/docs/conditional-rendering.html
按照文档进行操作后,我找到了答案:我必须使用 html
https://lit-element.polymer-project.org/guide/templates。以下代码有效。
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
${this.todoItem.done
? html`
<input type="checkbox" checked @click="${this.changeStatus}" />
`
: html`
<input type="checkbox" @click="${this.changeStatus}" />
`}
</li>
`;
}
更新
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
${html`
<input type="checkbox" ?checked="${this.todoItem.done}" @click="${this.changeStatus}" />
`}
</li>
`;
}
更新 V2
render() {
this.todoItem = JSON.parse(this.todoItem);
return html`
<li>
${this.todoItem.item} <button @click="${this.onRemove}">Remove</button>
<input type="checkbox" ?checked="${this.todoItem.done}" @click="${this.changeStatus}" />
</li>
`;
}