Polymer 1.x:如何将数据绑定到变量布尔属性?

Polymer 1.x: How to data bind to a variable boolean attribute?

问题

How do I bind a variable to/as the disabled attribute of a <paper-checkbox> element?

根据我的代码结果,似乎切换 disabled 属性 的唯一方法是将 disabled 属性作为 string 在开始标签中。肯定有办法将其切换为变量吗?

Link to JSBin

http://jsbin.com/zecidojizu/edit?html,输出
<!DOCTYPE html>
<html>  
<head>
  <meta charset="utf-8">
  <title>Polymer Bin</title>
  <base href="http://element-party.xyz/">
  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <link rel="import" href="all-elements.html">
</head>
<body>
<x-element></x-element>
<dom-module id="x-element">
  <template>
    <style>
      paper-checkbox {
        display: block;
        margin-bottom: 30px;
      }
    </style>
    <paper-checkbox                  >A</paper-checkbox>
    <paper-checkbox  disabled        >B</paper-checkbox>
    <paper-checkbox xdisabled        >C</paper-checkbox>
    <paper-checkbox  disabled=true   >D</paper-checkbox>
    <paper-checkbox  disabled="true" >E</paper-checkbox>
    <paper-checkbox  disabled=false  >F</paper-checkbox>
    <paper-checkbox  disabled="false">G</paper-checkbox>
    <paper-checkbox  [[bool]]        >H</paper-checkbox>
    <paper-checkbox "[[bool]]"       >I</paper-checkbox>
    <paper-checkbox  {{bool}}        >J</paper-checkbox>
    <paper-checkbox "{{bool}}"       >K</paper-checkbox>
  </template>
  <script>
    (function(){
      Polymer({
        is: 'x-element',
        properties: {
          bool: {
            type: String,
            value: 'disabled'
          }
        }
      });
    })();
  </script>
</dom-module>
</body>
</html>

您需要像这样绑定属性:disabled=[[bool]]。这相当于调用 element.disabled = bool,其中元素是 paper-checkbox 的某个实例。

有关示例,请参阅 this forked JSBin

基本上布尔值 HTML如果该属性存在则为真,如果不存在则为假。所以对于:

<paper-checkbox disabled="[[isDisabled]]"></paper-checkbox>

输出 HTML 将如下所示:

<paper-checkbox disabled></paper-checkbox>

isDisabledtrue 时,看起来像这样:

<paper-checkbox></paper-checkbox>

isDisabled 为假时。

这就是设置

的原因
<paper-checkbox disabled="false"></paper-checkbox>

仍会禁用复选框。

请参阅 Polymer's Documentation on Attribute Deserialization

中的最后一段

你没漏掉disabled$={{Boolean}}吗?

disabled 是原生 HTML 属性。要绑定到本机属性,您必须使用 $= 而不是 =

<paper-checkbox disabled$="{{isDisabled}}">Foo</paper-checkbox>