Polymer自定义元素属性为布尔类型的值
问题描述:
虽然Demo A
的作品,我想了解是否有可能使它像Demo B
工作。基本上,要为自定义元素将happyFlag
属性解析为布尔类型。Polymer自定义元素属性为布尔类型的值
// Demo A - works. bob smiles. cat frowns.
<x-smiley name="Bob" happyFlag="true"></x-smiley>
<x-smiley name="Cat" happyFlag="false"></x-smiley>
<polymer-element name="x-smiley" attributes="name, happyFlag" noscript>
<template>
{{name}} is
<span hidden?="{{happyFlag == 'true'}}">:-)</span>
<span hidden?="{{happyFlag == 'false'}}">:-(</span>
<hr>
</template>
</polymer-element>
// Demo B - does not work (span always hidden)
<x-smiley name="Bob" happyFlag="true"></x-smiley>
<x-smiley name="Cat" happyFlag="false"></x-smiley>
<polymer-element name="x-smiley" attributes="name, happyFlag" noscript>
<template>
{{name}} is
<span hidden?="{{happyFlag}}">:-)</span>
<span hidden?="{{happyFlag}}">:-(</span>
<hr>
</template>
</polymer-element>
答
您可以给出有关属性的输入类型的聚合提示。请参阅以下示例,其中我添加了Polymer脚本,特别是在创建的方法中添加了this.happyFlag = false
。这一行给聚合物一个暗示,这个值应该被视为一个布尔值。有关提示类型,请参阅Polymer's Documentation。
<polymer-element name="x-smiley" attributes="name, happyFlag">
<template>
{{name}} is {{happyFlag}}
<span hidden?="{{happyFlag}}">:-)</span>
<span hidden?="{{happyFlag}}">:-(</span>
<hr>
</template>
<script>
Polymer('x-smiley', {
created: function() {
this.happyFlag = false;
},
ready: function() {
}
})
</script>
FWIW,你不必设置'created'你可以简单地把它的原型属性。 –
这是真的。我最初的答案是这样,但是在阅读了关于在文档中使用原型的警告后,对其进行了更改。他们似乎只是警告在原型中设置对象或数组,所以我猜这对于这个特定的例子来说是安全的。 – adam8810
您也可以使用'发布:{happyFlag:真正}'来设置它的类型。 –