首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Polymer 3中的条件渲染

Polymer 3中的条件渲染
EN

Stack Overflow用户
提问于 2021-03-02 17:31:20
回答 1查看 125关注 0票数 0

我需要渲染不同的html基于布尔变量true或false的值。例如,在react中,我会在render函数的返回值中这样做:

代码语言:javascript
复制
{this.state.booleanValue ? "true" : "false"}

根据booleanValue的值,我得到了两种不同的输出。

我在Polymer 3中尝试过,并首先声明了我的bool变量:

代码语言:javascript
复制
static get properties() {
    return {
      myBoolValue: {
        type: Boolean
      }
    };
  }

然后,我尝试在我的template/html中使用它作为

代码语言:javascript
复制
${this.myBoolValue ? "" : ""}

但是,代码不能识别html模板中的变量"this.myBoolValue“。怎么会这样?我的模板的完整代码:

代码语言:javascript
复制
static get template() {
    return html`
     
     <div>
        ${this.myBoolValue ? "true" : "false"}  // error, does not recognize "this.myBoolValue". 
   </div>

    `;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 03:58:37

如果myBoolValue的默认值是false,您可以像这样更改属性和模板(如果您想使用conditional templates,则必须导入@polymer/polymer/lib/elements/dom-if.js)。

代码语言:javascript
复制
static get properties() {
  return {
    myBoolValue: {
      type: Boolean,
      value: false
    }
  };
}
static get template() {
  return html`
    <p>[[myBoolValue]]</p>

    // OR conditional templates:
    <template is="dom-if" if="{{myBoolValue}}">
      true
    </template>
    <template is="dom-if" if="{{!myBoolValue}}">
      false
    </template>
  `;
}

如果您不能或不想设置默认值,请像这样更改代码并使用computed property

代码语言:javascript
复制
static get properties() {
  return {
    myBoolValue: {
      type: Boolean
    },
    computedBool: {
      type: String,
      computed: "_isTrue(myBoolValue)",
      value: false
    }
  };
}

static get template() {
  return html`
    <p>[[computedBool]]</p>

    <template is="dom-if" if="{{computedBool}}">
      true
    </template>
    <template is="dom-if" if="{{!computedBool}}">
      false
    </template>
  `;
}

_isTrue(a) {
  return a === true;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66436706

复制
相关文章

相似问题

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