场景:
在我的webComponent - health-check.js文件中:
static get properties() {
return {
plan:Object,
};
}
<div class="body"><p class="title">${this.plan.title}</p></div>和
在我的index.html文件中,我传递json,如下所示:
<health-check plan='{ "title" : "Solution Architecure",
"status" : "Approved" }'></health-check>但它不会在我的健康检查组件中呈现标题
问题:
发布于 2018-09-26 05:04:03
我认为您不能从html文件中传递对象,因为它只是html,而不是lit或lit,在这种情况下,不是试图解析值(Update,我刚刚找到了另一种定义属性的方法,见下文)。当然,您仍然可以传递字符串并在元素中解析它。
在index.html中
<health-check planString='{
"title": "Solution Architecure",
"status": "Approved"
}'>
</health-check>在健康-check.js中
class HealthCheck extends LitElement {
static get properties () {
return {
planString: String
}
}
render () {
return html`
<div class='body'>
<p class='title'>${JSON.parse(this.planString).title}</p>
</div>
`
}
}但是,我建议将代码封装在单个入口点中,如my-app元素。
在index.html中
<my-app></my-app>在app.js中
class App extends LitElement {
render () {
return html`
<health-check .plan='${{
title: 'Solution Architecure',
status: 'Approved'
}}'>
</health-check>
`
}
}在健康-check.js中
class HealthCheck extends LitElement {
static get properties () {
return {
plan: Object
}
}
constructor () {
super()
this.plan = {}
}
render () {
return html`
<div class='body'>
<p class='title'>${this.plan.title}</p>
</div>
`
}
}更新
您可以定义属性类型来告诉点燃元素如何序列化和反序列化。
class HealthCheck extends LitElement {
static get properties () {
return {
plan: {
type: {
fromAttribute (value) {
return JSON.parse(value)
}
}
}
}
}
render () {
return html`
<div class='body'>
<p class='title'>${this.plan.title}</p>
</div>
`
}
}注意:这段代码用点燃元素0.6.x和lit 0.11.x编写。
https://stackoverflow.com/questions/52423100
复制相似问题