在 dart 中如何使用 PaperInputBehavior 扩展自定义 PolymerElement?

In dart how to extend a custom PolymerElement with PaperInputBehavior?

基本上我尝试将 GoldCcCvcInput 移植到 dart 实现,而不是包装 js 实现。

看看这个: https://github.com/PolymerElements/gold-cc-cvc-input/blob/master/gold-cc-cvc-input.html 连同 https://github.com/dart-lang/polymer-dart/wiki/behaviors

类似于:

 @PolymerRegister('nbdate-input')
 class NbdateInput extends PolymerElement with PaperInputBehavior,
 IronControlState, IronA11yKeysBehavior ...

最小测试项目 https://github.com/jonboj/inputbehavior-dart.git

项目初始化时没有转储任何错误消息并显示 iron-input 元素正常。但是,当 iron-input 元素之一成为焦点时,以下异常会转储到控制台中:

Uncaught TypeError: Cannot read property 'focus' of undefined
  Polymer.PaperInputBehaviorImpl._onFocus   
  handler   
  Polymer.Base._addFeature.fire 
  Polymer.IronControlState._focusBlurHandler

这有方法重写 onFocusedChanged https://github.com/PolymerElements/gold-cc-cvc-input/blob/master/gold-cc-cvc-input.html#L219

在 dart 中触发相应的 Observer,并在异常转储后打印输出。

https://github.com/jonboj/inputbehavior-dart/blob/master/lib/nbdatebehavior_input.dart#L56

我会检查控制台是否有错误,mixin 排序看起来不正确,它应该会在消息中为您提供所需的排序,这可能会解决您的问题(我希望这样的排序 IronA11yKeysBehavior, IronControlState, PaperInputBehavior).

此外,请确保您在构造函数中调用 polymerCreated()

就我而言,所需的功能由

提供

https://elements.polymer-project.org/elements/paper-input?active=paper-input-container

Dart 遵循最后一个示例(社会保险号)的结构 https://elements.polymer-project.org/elements/paper-input?view=demo:demo/index.html&active=paper-input