首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lit.html呈现对象

使用lit.html呈现对象
EN

Stack Overflow用户
提问于 2018-09-20 10:34:06
回答 1查看 776关注 0票数 1

场景:

在我的webComponent - health-check.js文件中:

代码语言:javascript
复制
  static get properties() {
    return {
      plan:Object,
    };
  }

 <div class="body"><p class="title">${this.plan.title}</p></div>

在我的index.html文件中,我传递json,如下所示:

代码语言:javascript
复制
<health-check plan='{ "title" : "Solution Architecure",
 "status" : "Approved" }'></health-check>

但它不会在我的健康检查组件中呈现标题

问题:

  • 使用lit.html呈现对象值?
  • 在我的健康检查组件中呈现标题。 有什么想法吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 05:04:03

我认为您不能从html文件中传递对象,因为它只是html,而不是lit或lit,在这种情况下,不是试图解析值(Update,我刚刚找到了另一种定义属性的方法,见下文)。当然,您仍然可以传递字符串并在元素中解析它。

在index.html中

代码语言:javascript
复制
<health-check planString='{
  "title": "Solution Architecure",
  "status": "Approved"
}'>
</health-check>

在健康-check.js中

代码语言:javascript
复制
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中

代码语言:javascript
复制
<my-app></my-app>

在app.js中

代码语言:javascript
复制
class App extends LitElement {
  render () {
    return html`
      <health-check .plan='${{
        title: 'Solution Architecure',
        status: 'Approved'
      }}'>
      </health-check>
    `
  }
}

在健康-check.js中

代码语言:javascript
复制
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>
    `
  }
}

更新

您可以定义属性类型来告诉点燃元素如何序列化和反序列化。

代码语言:javascript
复制
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编写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52423100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档