Как я могу получить значение ввода бумаги в дротике?

Я хочу прочитать содержимое paper-input после нажатия кнопки в Dart. Я пробовал другие предложения, такие как чтение атрибутов value и inputValue как для paper-element, так и для внутреннего html ‹input>.

Поиск в исходном коде страницы не показывает, что находится в файле paper-input. Я нашел содержимое внутри частного члена внутреннего html ‹input>, но я не уверен, что использование зеркал в Dart может отражать частные члены.

Соответствующий атрибут value находится по адресу:

paper-element -> inner html <input> -> attributes map -> 
    private variable named _element

Таким образом, экземпляр карты атрибутов имеет некоторые члены, которые не являются частью карты. Его член _element имеет поле value uh, которое содержит текст, находящийся в paper-input.

Скажи мне, что я что-то упускаю.

EDIT: вот что в итоге стало решением: экземпляр Бумажные элементы в дартс


person Jacob Phillips    schedule 14.07.2014    source источник


Ответы (1)


Я попробовал это вчера, и это работало в основном с inputValue (во время редактирования) и value после выхода из элемента ввода с помощью клавиши tab.

Убедитесь, что вы используете последний элемент Polymer.

зависимости: полимер: ">=0.12.0-dev ‹0.13.0"

(Для получения разрабатываемых выпусков зависимостей необходимо специальное ограничение зависимостей)

При доступе к значению, например

($['my-input'] as PaperInput).value // or .inputValue

вернул старое значение, но

<paper-input value='{{value}}' inputValue='{{inputValue}}` placeholder='enter text here></inputValue>

@observable String value;
@observable String inputValue;

работал

person Günter Zöchbauer    schedule 14.07.2014
comment
Я использую ›=0.11.0 ‹0.12.0! - person Jacob Phillips; 14.07.2014
comment
Это может быть связано с использованием HtmlElement вместо PaperInput, потому что он продолжал выдавать мне ошибки из querySelector(). Здесь на SO были некоторые обходные пути, но я на самом деле не следил, поэтому использовал карту атрибутов. Все остальное работало до сих пор, но это paper-input похоже на Форт-Нокс: P. Завтра еще раз посмотрю. Спасибо за помощь. - person Jacob Phillips; 14.07.2014
comment
Не пробовал использовать атрибуты. Вы можете использовать событие прямого доступа к полю shadowRoot.querySelector('paper-input').value, хотя DartEditor показывает предупреждение или использовать (shadowRoot.querySelector('paper-input') as PaperInput).value (вам нужно добавить импорт для PaperInput, например import 'packages:paper_elements/paper_input.dart'. Но, как я объяснил в своем ответе, у меня тоже были проблемы с доступом к полям значений с помощью кода. Привязка шаблона работала, хотя . - person Günter Zöchbauer; 14.07.2014
comment
где вы берете экземпляр shadowroot? - person Jacob Phillips; 15.07.2014
comment
Это из кода внутри элемента Polymer или когда вы ссылаетесь на элемент Polymer, например (querySelector('paper-input') as PaperInput).shadowRoot.querySelector('input'). and so on - person Günter Zöchbauer; 15.07.2014
comment
Жаль, что это просто не позволяет. Несмотря на то, что PaperInput является подтипом HtmlElement, возникает исключение, поскольку HtmlElement не является подтипом PaperInput. - person Jacob Phillips; 15.07.2014
comment
Я не совсем понимаю ваш комментарий. Вам нужно импортировать import packages:paper_elements/paper_input.dart, чтобы такой «приведение» работало. Можете ли вы предоставить более подробную информацию, в какой момент возникает ошибка? На самом деле я не пробовал код, который я опубликовал, но я почти уверен, что он работает именно так. - person Günter Zöchbauer; 15.07.2014
comment
У меня уже есть импорт. Код находится по адресу github.com/jphilli85/grujin/blob/master/. web/grujin.dart. Исключение возникает в строке querySelector, если я использую PaperInput вместо HtmlElement. Различные приведения вызывают одно и то же исключение. Например, _subject в этом файле — это бумажный ввод. - person Jacob Phillips; 15.07.2014
comment
Обычно, когда приведение к конкретному типу PolymerElement не работает, элемент не инициализирован должным образом или путь импорта неверен, что не позволяет Polymer распознать, что элемент относится к этому типу. Я не смог найти соответствующую строку в вашем коде. (сегодня я недоступен, но я посмотрю, если вы добавите комментарий) - person Günter Zöchbauer; 15.07.2014
comment
Я сделал еще один пост с максимально сокращенным html и dart, но с описанием той же проблемы: заголовок stackoverflow.com/questions/24745751/ - person Jacob Phillips; 15.07.2014
comment
Будет ли указанная версия dev работать с angular/ng-model? Я не мог заставить это работать с первоначальным выпуском бумажных элементов, но похоже, что это частично решено? - person Nicholas Tuck; 15.07.2014
comment
Я также еще не смог заставить бумажные элементы работать с Angular.dart stackoverflow.com/questions/24724848 - person Günter Zöchbauer; 15.07.2014