我将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]
任何想法? 非常感谢帮助。
只要问我是否需要查看更多代码。
答案 0 :(得分:3)
当<input>
从代码更改时,典型的change
不会触发value
事件,所以我相信<paper-element>
正在表达平台行为。
但是,<paper-element>
会触发您可以使用的(非冒泡)value-changed
事件。
<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;
注意:如果您运行代码段,请检查控制台以查看事件是否会触发。