2015-04-26 2 views
1

У меня следующий код следуя примерам в https://github.com/dart-lang/polymer-core-and-paper-examples/blob/master/web/paper_dropdown.html и https://github.com/dart-lang/polymer-core-and-paper-examples/blob/master/web/paper_dropdown.dartПолучение выбранного элемента в бумаги элемента выпадающего списка

EDITED

.html

<paper-dropdown-menu 
    label='Click to select..' 
    on-core-select='{{onCoreSelectCountryHandler}}'> 
    <paper-dropdown class='dropdown'> 
    <core-menu id='country' class='menu'> 
     <template repeat='{{country in countries}}'> 
     <paper-item>{{country.name}}</paper-item> 
     </template> 
    </core-menu> 
    </paper-dropdown> 
</paper-dropdown-menu> 

.dart

final List<Country> countries = [ 
    const Country('Afghanistan', 'AF'), 
    const Country('Åland Islands', 'AX')]; 

class Country { 
    final String name; 
    final String code; 
    const Country(this.name, this.code); 
} 

void onCoreSelectCountryHandler(dom.CustomEvent e, var detail) { 
    var detail = new JsObject.fromBrowserObject(e)['detail']; 

    if (detail['isSelected']) { 
    // DOES NOT WORK - HOW DO I GET THE SELECTION ATTEMPTED BELOW 
    // The detail should be related to the Country class but 
    // I can't seem to relate it so I could get the selection. 
    var kuntry = (detail['item'] as PaperItem).text; 

} 

Как получить выбранный элемент в раскрывающемся списке (который отображается нормально) с использованием кода дротика?

ответ

1

обновление

Я думаю, что это самый простой способ

void onCoreSelectCountryHandler(dom.CustomEvent e, var detail) { 
    print(countries[$['country'].selected].name); 
    // or if you really need to access the `<paper-item>` element 
    print(detail['item'].text); 
} 

старый

Там не в paper-dropdown нет selected. Оберните core-menu в пределах paper-dropdown, который обеспечивает selected.

см
- https://www.polymer-project.org/0.5/docs/elements/core-menu.html и примера на https://www.polymer-project.org/0.5/docs/elements/paper-dropdown-menu.html

+0

Нет проблем, это просто держать область Дарта в хорошем состоянии :) –

0

Симпл сделать список стран наблюдаемого

final List<Country> cuntries = toObservable[ 
    const Country('Afghanistan', 'AF'), 
    const Country('Åland Islands', 'AX')}] 

Выбор извлеченного.

Мой недосмотр.

+0

Это было все изменения, которые мне пришлось внести с моим кодом, чтобы он работал. Ваш ответ печатает (подробно ['item']. Текст); подтверждает это. Если я удалю toObservable, он все равно не напечатает элемент. В конце концов, я задал вопрос, потому что мой код не работал. –

+0

Вижу. Я не представляю, как это связано. Возможно, вы используете его по-разному в своем приложении. Когда вы загружаете страны с сервера, например, или изменяете содержимое списка любым другим способом после загрузки приложения, тогда вам определенно нужно 'toObservable' –

Смежные вопросы