Если добавить несколько веб-компонентов в мое приложение, как в myapp.html ниже:Dart Web UI: Как получить ссылку на элемент внутри веб-компонента?
<head>
<link rel="components" href="package:xclickcounter/xclickcounter.html">
</head>
<body>
<div id="container1"><x-click-counter></x-click-counter></div>
<div id="container2"><x-click-counter></x-click-counter></div>
<div id="container3"><x-click-counter></x-click-counter></div>
<div id="container4"><x-click-counter></x-click-counter></div>
...
</body>
И у меня есть количество элементов в моем веб-компонента, как в xclick-counter.html ниже:
<html><body>
<element name="x-click-counter" constructor="CounterComponent" extends="div">
<template>
<button id="button1" on-click="increment()">\\\Increment me</button>
<button id="button2" on-click="decrement()">Decrement me</button>
<span>(click count: {{count}})</span>
</template>
</element>
<!-- more below... -->
</body></html>
Как получить ссылку на # button2 в веб-компоненте в # container3 из myApp.dart?
Я бы ожидать, что я могу получить ссылку, как показано ниже, но моя ссылка оказывается пустой:
var reference=document.query('#container1').query('#button2');
Спасибо за отличный ответ. Я, как правило, обходным путем, как представляется, не работает как мой код «reference = document.query ('# container1'). Query ('. Button2'); по-прежнему отображается как null. Полагаю, в итоге я не ищу, чтобы мои веб-компоненты были полностью инкапсулированы, и мне нужен эквивалент публичных полей и также как частные поля. –
Вы можете прочитать больше о Shadow DOM: http : //www.html5rocks.com/en/tutorials/webcomponents/shadowdom/ Это может предоставить больше контекста. –
Спасибо за ссылку на учебник. Это объясняет многое, и я обновил свой код, чтобы устранить необходимость доступа к инкапсулированным элементам. –