Я пытаюсь познакомиться с полимером и пытаюсь создать с ним образец приложения. Следуя руководствам на https://www.dartlang.org/docs/tutorials/polymer-intro и чтение других вопросов StackOverflow, таких как Как запустить пользовательское событие из Polymer Dart? Мне удалось создать два элемента, в которых один элемент запускает событие, на которое действует второй элемент. Однако мне удалось выяснить, как это сделать только в тех случаях, когда активирующий элемент является дочерним элементом прослушивающего элемента. Например, следующим образом
foo.html
<link rel="import" href="bar.html">
<polymer-element name="foo">
<template>
<my-bar on-myevent="{{react}}"></mybar>
</template>
<script type="application/dart" src="foo.dart"></script>
</polymer-element>
foo.dart
@CustomTag('my-foo')
class Foo extends PolymerElement {
Foo() {}
Foo.created() : super.created();
void react() {
print("Event happened and was heard!");
}
}
bar.html
<polymer-element name="bar">
<template>
<button on-click="{{click}}"></button>
</template>
<script type="application/dart" src="bar.dart"></script>
</polymer-element>
bar.dart
@CustomTag('my-bar')
class Bar extends PolymerElement {
Bar() {}
Bar.created() : super.created();
void click(Event e, var details, Node node) {
print("Triggering event");
fire('my-event');
}
}
index.html
<!DOCTYPE html>
<html>
<head>
<script type="application/dart" src="main.dart"></script>
<script src="packages/browser/dart.js"></script>
<link rel="import" href="foo.html">
</head>
<body>
<div id="content">
<foo></foo>
</div>
</body>
</html>
Что я хотел бы сделать, так это иметь возможность перемещать кнопку bar
за пределы элемента foo
, так как в приложении, которое я хочу разработать, я хотел бы, чтобы элементы управления вводом существовали в отдельной области страницы от основного вывода. дисплей (элемент foo
). По сути, я бы хотел, чтобы foo.html
и index.html
выглядели так:
foo.html
<polymer-element name="foo">
<template>
<!-- Databound output stuff here -->
</template>
<script type="application/dart" src="foo.dart"></script>
</polymer-element>
index.html
<!DOCTYPE html>
<html>
<head>
<script type="application/dart" src="main.dart"></script>
<script src="packages/browser/dart.js"></script>
<link rel="import" href="foo.html">
<link rel="import" href="bar.html">
</head>
<body>
<div id='control-panel'>
<bar></bar>
</div>
<div id="content">
<foo></foo>
</div>
</body>
</html>
Кажется, я не могу найти примеров того, как, если я перемещаю кнопку bar
из элемента foo
, чтобы событие от bar
было видно foo
. Как лучше всего прослушать событие от bar
, если оно не является дочерним элементом foo
?