Доступ к 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.

Редактировать:

Другие вопросы по тегам