2013-12-04 5 views
2

Я хотел бы создать пользовательский полимерный элемент ab-btn, который расширяет элемент 'a'. Он должен быть использован как:Пользовательский полимерный элемент, расширяющий AElement в Dart

<ab-btn href="http://www.gooogle.com">Google</ab-btn> 

мой HTML декларация полимерного элемента выглядит (сценарий приведен в конце, потому что я хочу, чтобы объявить большее количество элементов в одном файле):

<polymer-element name="ab-btn" extends="a"> 
    <template> 
    <content></content> 
    </template> 
</polymer-element> 

<script type="application/dart" src="ab-elements.dart"></script> 

и дротик скрипт для элемента, как:

import 'package:polymer/polymer.dart'; 
import 'dart:svg'; 

@CustomTag('ab-btn') 
class AbBtn extends AElement { 
    AbBtn.created() : super.created(); 

    var inputMethodContext; 
} 

Когда я пытаюсь использовать этот элемент я всегда получаю ошибку:

#13  _ZoneDelegate.run (dart:async/zone.dart:417) 
#14  _CustomizedZone.run (dart:async/zone.dart:627) 
#15  initPolymer (package:polymer/src/loader.dart:37:33) 
#16  main (package:polymer/init.dart:23:22) 


Exception: InvalidCharacterError: Internal Dartium Exception 
    undefined (undefined:0:0) 

Каков правильный способ расширения элементов 'a'?

ответ

2

Вы должны добавить с полимером, Observable

@CustomTag('ab-btn') 
class AbBtn extends AElement with Polymer, Observable { 
    AbBtn.created() : super.created() { 
    super.polymerCreated(); // <== also important for elements that extend DOM elements 
    } 
} 

При использовании элемента

<a is="ab-btn" href="http://www.gooogle.com">Google</a> 

или создать элемент по коду:

var elm = new Element.tag('a', 'ab-btn'); 
+0

работает как очарование, спасибо за этот ответ. Вам просто нужно убедиться, что вы расширяетесь в части полимерного элемента - это тот же самый элемент, который вы распространяете в коде –

Смежные вопросы