1
我很高興能夠開始使用紙質元素,但我在表單元素提交方面遇到了一些問題。在以下情況:是否有相當於紙張輸入的提交?
<!DOCTYPE html>
<link rel="import" href="packages/polymer/polymer.html">
<link rel="import" href="packages/paper_elements/paper_input.html">
<polymer-element name="c2button-element">
<template>
<paper-input value="{{myname}}" floatinglabel="true" label="enter your name" on-change="{{nameSubmitted}}"></paper-input>
</template>
<script type="application/dart">
import 'dart:html';
import 'package:polymer/polymer.dart';
@CustomTag('c2button-element')
class C2Button extends PolymerElement {
@observable String myname = "Simon";
void nameSubmitted(Event e, var detail, Node target) {
print("Being called with event $e for $myname");
}
C2Button.created() : super.created();
@override void attached() { super.enteredView(); }
@override void detached() { super.leftView(); }
}
</script>
</polymer-element>
我想要輸入的行爲是按enter
或模糊輸入每次打電話nameSubmitted
。實際情況是,只有在改變了myname
的值(這並不令人意外,因爲我已註冊到on-change
)後,我是否會得到一個要觸發的事件,但它會觸發兩次!改變從Simon
myname
到Edwin
和壓制之後進入:
Being called with event Instance of 'CustomEvent' for Edwin
Being called with event Instance of 'Event' for Edwin
我需要做別的事情,比如寄存器on-keypress
和過濾器回車鍵?我的第一次嘗試仍然遭受類似的被稱爲兩次的問題。第一次按回車,myname
仍然包含舊值,好像紙張輸入尚未提交新值 - 是否由於驗證?
<paper-input value="{{myname}}" floatinglabel="true" label="enter your name" on-keypress="{{nameSubmitted}}"></paper-input>
void nameSubmitted(KeyboardEvent e, var detail, Node target) {
if (e.keyCode != 13) {return;}
print("Being called with event $e for $myname");
}
變爲Edwin
之後,按輸入兩次:
Being called with event Instance of 'KeyboardEvent' for Simon
Being called with event Instance of 'KeyboardEvent' for Edwin