设置值

时间:2016-02-10 14:21:49

标签: javascript events polymer

我将eventListener的{​​{1}}添加到一堆change-event

现在,当我手动更改(通过点击或输入)paper-inputs value paper-input按预期触发时,但当我设置event代码时,零在value内可见,但input不会触发。

代码:

event

我调用以下函数在需要时重置所有输入:

for(var i = 0; i<this.children.length; i++){
  this.children[i].children[0].set('value',0);
  this.children[i].children[0].addEventListener('change', function(e){
    e.detail = {"name" : e.srcElement.name,
                "value": e.srcElement.value
               }
    pushToChecked(e);
  })
}

_setToZero : function(){ for(var i = 0; i<this.children.length; i++){ this.children[i].children[0].set('value',0);//should fire change-event } } 看起来像这样:

this.children[i]

任何想法? 非常感谢帮助。

只要问我是否需要查看更多代码。

1 个答案:

答案 0 :(得分:3)

<input>从代码更改时,典型的change不会触发value事件,所以我相信<paper-element>正在表达平台行为。

但是,<paper-element>会触发您可以使用的(非冒泡)value-changed事件。

&#13;
&#13;
<base href="http://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="paper-input/paper-input.html">
<style>
  body {
    font-family: sans-serif;
  }
</style>

  <x-example></x-example>

<dom-module id="x-example">
  <style>
    :host {
      display: block;
    }
  </style>
  <template>
    <paper-input placeholder="input" on-change="change" on-value-changed="valueChanged" value="{{value}}"></paper-input>
    <button on-tap="changeValue">Change Value</button>
  </template>
  <script>
    // only need this when in the main document and on non-Chrome
    addEventListener('WebComponentsReady', function() {
      Polymer({
        is: 'x-example',
        changeValue: function() {
          this.value = Math.floor(Math.random() * 1000);
        },
        change: function() {
          console.log('got _change_ event');
        },
        valueChanged: function() {
          console.log('got _value-changed_ event');
        }
      });
    });
  </script>
</dom-module>
&#13;
&#13;
&#13;

注意:如果您运行代码段,请检查控制台以查看事件是否会触发。