Доступ к htmlElement в ShadowDom в Dart Polymer
Я довольно новичок в Дарт и Полимер и у меня есть вопрос, на который я не смог найти ответ.
Я пишу простое одностраничное приложение и хочу получить доступ к buttonElement в shadowDom полимерного элемента. ( SDK 1.0 и Polymer 0.9.3, стабильная версия Dart)
Как я понял из документации и API, я должен использовать:
@override
void enteredView() {
super.enteredView();
submitButton = $['submitButton'];
submitButton.disabled = true;
}
Теперь вот мой HTML:
<polymer-element name="..." attributes="..." >
<template>
...
<template repeat="{{ ... in ... }}">
...
</template>
<template if="{{...}}">
...
<button id="submitButton" on-click="{{...}}">...</button>
</template>
</template>
</polymer-element>
В этом шаблоне, когда я распечатываю $['submitButton'] в конце метода enterView, я получаю нулевое значение.
НО: когда я меняю свой HTML-шаблон и не помещаю кнопку в тэг нестандартного шаблона:
<polymer-element name="..." attributes="..." >
<template>
...
<template repeat="{{ ... in ... }}">
...
</template>
<template if="{{...}}">
...
</template>
<button id="submitButton" on-click="{{...}}">...</button>
</template>
</polymer-element>
Я получил свою кнопку и могу работать с ней. В противном случае последний вызов вошедшего в представление (button.disabled) выдает ошибку.
Кто-нибудь может мне помочь с этим? Что я делаю неправильно?
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Просто включить / отключить кнопку можно с помощью специального выражения в Dart для атрибута disabled.
<button disabled?="{{buttonDisabled}}">
Это приведет к удалению и добавлению отключенного атрибута. Поиск элемента в шаблоне if или repeat все равно не работает так.
1 ответ
Доступ к элементам внутри <template repeate="...">
или же template if="...">
пока не работает с помощью $['id']
метод.
Недавно об этом говорили в группе Дартс. Я думал, что должен быть запрос функции, но пока не смог их найти.
Я не уверен, работает ли shadowRoot.querySelector('#id').
Если нет, то AFAIK единственный вариант MutationObserver
как здесь dart-Polymer-Dart-examples / web / mutation_observers /, так как вы не можете получить доступ к элементу до того, как он был вставлен в DOM.
Редактировать: