#html #dart #dart-polymer
#HTML #dart #dart-полимер
Вопрос:
Я пытался расширить <button>
, но пока безуспешно. Что я делаю не так. Я использую редактор Dart SDK 1.5.2 в pubspec.yaml, версия для Polymer установлена на:
polymer: ">=0.11.0 <0.12.0"
index.html
<!DOCTYPE html>
<html>
<head>
<!-- <script src="packages/web_components/platform.js"></script>
not necessary anymore with Polymer >= 0.14.0 -->
<script src="packages/web_components/dart_support.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Extended Button - Dart v1.5.2</title>
<!--Extended Button-->
<link rel="import" href="view/ext_button.html" />
</head>
<body>
<button is="ext-button">Test Button</button>
<script type="application/dart">export "package:polymer/init.dart";</script>
</body>
</html>
просмотр/ext_button.dart
import "dart:html";
import "package:polymer/polymer.dart";
@CustomTag("ext-button")
class ExtButton extends ButtonElement {
ExtButton.created() : super.created();
factory ExtButton(){
onClick.listen(clicked);
}
void clicked(MouseEvent e){
print("Ext-Button clicked");
}
}
view/ext_button.html
<!DOCTYPE html>
<link rel="import" href="packages/polymer/polymer.html">
<polymer-element name="ext-button" extends="button">
<template>
</template>
<script type="application/dart" src="ext_button.dart"></script>
</polymer-element>
Итак, приведенный выше код не работает, но как только я напишу его, как показано ниже (просто для проверки работы ext-button), он сообщает мне следующее:
«web/index.html:20:7: пользовательский элемент «ext-button» расширяется от «button», но этот тег не будет включать свойства «button» по умолчанию. Чтобы исправить это, либо запишите этот тег как <button is="ext-button">
, либо удалите атрибут «extends» из объявления пользовательского элемента.»
<ext-button>Test Button</ext-button>
Так что немного запутался 😉 Я думаю, что исправить легко и просто — но я просто не вижу проблемы;-(
Ответ №1:
Просто для дальнейших ссылок, две вещи, описанные выше, решили проблему. Вот обновленные части, теперь это работает.
просмотр/ext_button.dart
import "dart:html";
import "package:polymer/polymer.dart";
@CustomTag("ext-button")
class ExtButton extends ButtonElement with Polymer {
ExtButton.created() : super.created()
{
polymerCreated();
onClick.listen(clicked);
}
void clicked(MouseEvent e){
print("Ext-Button clicked");
}
}
view/ext_button.html
<!DOCTYPE html>
<link rel="import" href="packages/polymer/polymer.html">
<polymer-element name="ext-button" extends="button">
<template>
<content></content>
</template>
<script type="application/dart" src="ext_button.dart"></script>
</polymer-element>
Ответ №2:
Насколько я вижу, вам не хватает двух вещей:
- вызов
polymerCreated()
внутри конструктора пользовательских элементов. - и
extends ButtonElement with Polymer
Уже есть подобный вопрос. Я посмотрю их позже, когда у меня будет больше времени. Может быть, вы тем временем сами их найдете. Пожалуйста, добавьте комментарий со ссылкой, если вы это сделаете.