繁体   English   中英

Polymer 1.0布尔属性,默认值设置为true

[英]Polymer 1.0 boolean property having default value set to true

我有一个Polymer 1.0自定义元素,它具有boolean类型的属性,默认值设置为true:

    myProperty: {
        type: Boolean,
        value: true
    }

在我的单元测试中,我将my-property设置为false来实例化这个自定义元素:

<my-custom-element id="myElem" my-property="false"></my-custom-element>

 var elem = document.getElementById('myElem');

 test('it_should_set_myProperty_to_false', function () {
     assert.equal(elem.myProperty, false);
 })

单元测试失败了。 当我希望它是假的时候, elem.myProperty实际上设置为true。 为什么是这样?

布尔值属性的行为在Polymer 1.0中已更改 ,现在遵循HTML布尔属性的规范。 如果元素上存在属性(无论属性值如何),则该属性设置为true,如果未指定属性,则不会发生反序列化。 因此,如果最初为true,则无法将布尔属性设置为false。

您只能将属性的默认值设置为false

myProperty: {
   type: Boolean,
   value: false
}

然后设置属性使myProperty true。

<my-element my-property></my-element>

在Polymer项目的一些问题中讨论了该主题,例如此处此处

第二个问题还提到了使用Object类型的属性的解决方法。 因为这些属性是使用JSON.parse反序列化的,所以可以使用my-property="false"my-property="true"指定一个布尔值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM