javascript - Checkbox 的 checked 属性绑定(bind) - Polymer

标签 javascript html checkbox polymer

我正在尝试将 Polymer 属性绑定(bind)到 CheckBox 的选中属性。然而,属性的观察者永远不会被解雇,此外,标签也永远不会显示任何文本。

但是,每次单击 CheckBox 时,我都能执行一个函数。

这是我的代码:

<link rel="import" href="../../components/polymer/polymer.html">

<dom-module id="check-box-example">
  <template>
    <div>
      <label>
        <template if="{{checked}}">Uncheck</template>
        <template if="{{!checked}}">Check</template>
      </label><br>
      <input type="checkbox" checked="{{checked}}" on-click="_checkBoxClicked">Check Box
    </div>
  </template>
  <script>
    Polymer({
      is: 'check-box-example',
      properties:{
        checked: {
          type: Boolean,
          observer: '_checkedChanged'
        }
      },
      _checkBoxClicked: function() {
        console.log("The Check Box was clicked.");
      },
      _checkedChanged: function(newValue, oldValue) {
        console.log("New Checkbox value: " + newValue);
      },
    });
  </script>
</dom-module>

我做错了什么?提前致谢。

最佳答案

几个问题:

  1. 您的模板缺少 is="dom=if",因此它在您的代码中实际上什么都不做。

  2. 即使应用了 dom-ifif 属性也会设置为 checked,它没有初始值。只有当绑定(bind)属性具有非 undefined 值时才会评估绑定(bind),并且由于从未设置 checked,您的模板不会标记任何内容(即,您不会看不到“选中”或“取消选中”)。

    properties: {
      checked: {
        type: Boolean,
        value: false  // initial value required for binding
      }
    }
    
  3. 您的模板文本向后看。 if="{{checked}}"的文本内容是"Uncheck",而if="{{!checked}}"是"Check"。也许这些是用户说明而不是复选框状态。

  4. 原生 input 不会为其 checked 属性发出更改事件,因此绑定(bind)不会更新您的 checked 属性(property)。相反,您可以更新您的点击处理程序以明确设置您的 checked 属性以匹配 inputchecked 的值。

    _checkBoxClicked: function(e) { this.checked = this.$.input.checked; }
    
  5. 您的 labelinput 没有关联,因此单击它不会更改 checkbox 的状态。您可以使用 labelfor 来解决这个问题:

    <label for="foo">...</label>
    <input id="foo">
    

    或者通过使 input 成为 label 的子元素:

    <label>
      <input>
    </label>
    

codepen

关于javascript - Checkbox 的 checked 属性绑定(bind) - Polymer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185367/

相关文章:

javascript - 将值添加到从 document.createElement 创建的 div

javascript - 在 JavaScript 中使用 ()() 将参数传递给匿名函数

jquery - Bootstrap fa fa 图标

html - 如何解决这个简单的 Aurelia css 问题?

java - 我怎样才能让我的复选框自行选中

Javascript 使用 if 语句声明变量

php - 如何修复php非法偏移错误

html - 我在 ul、li 元素中嵌套 CSS/HTML 复选框时遇到问题

c# - 通过 WebBrowser 控件取消选中网页中的复选框

javascript - bootstrap 4 仅滚动中间列/facebook 像滚动