Как мога да получа стойността при въвеждане на хартия в дартс?

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

Търсенето в източника на страницата не разкрива какво има в paper-input. Намерих съдържанието вътре в частен член на вътрешния html ‹input>, но не съм сигурен дали използването на Mirrors в Dart може да отразява частни членове.

Съответният атрибут value се намира на:

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

Така че екземплярът на картата на атрибутите има някои членове, които не са част от картата. Неговият член _element има поле value uh, което съдържа текста, намиращ се в paper-input.

Кажи ми, че пропускам нещо.

РЕДАКТИРАНЕ: Ето какво в крайна сметка се оказа решението: Екземпляр на Хартиени елементи в дартс


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


Отговори (1)


Опитах го вчера и работи предимно с inputValue (докато редактирах) и value след напускане на елемента за въвеждане с помощта на клавиша tab.

Уверете се, че използвате най-новия полимерен елемент.

зависимости: полимер: ">=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, за да накарате такъв „cast“ да работи. Можете ли да предоставите по-подробна информация в кой момент възниква грешката? Всъщност не съм пробвал кода, който публикувах, но съм почти сигурен, че работи по този начин. - 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
Ще работи ли изброената версия за разработчици с angular / ng-model? Не можах да накарам това да работи с първоначалното издание на хартиените елементи, но изглежда, че може би това е частично решено? - person Nicholas Tuck; 15.07.2014
comment
Освен това все още не успях да накарам хартиени елементи с работещ Angular.dart stackoverflow.com/questions/24724848 - person Günter Zöchbauer; 15.07.2014