2015-04-26 49 views
1

我有以下代碼以下在https://github.com/dart-lang/polymer-core-and-paper-examples/blob/master/web/paper_dropdown.html和EDITED檢索在紙面元件下拉列表中選擇的項目

例子https://github.com/dart-lang/polymer-core-and-paper-examples/blob/master/web/paper_dropdown.dart

的.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; 

} 

如何使用dart代碼檢索下拉(通常顯示)中的選定元素?

回答

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。在paper-dropdown之內包含core-menu,其提供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

沒問題,只是爲了保持Dart區域得到良好的維護:) –

0

簡單使國家名單觀察到的

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

選擇被檢索。

我的疏忽。

+0

這就是我必須使用我的代碼才能使其工作的所有變化。您的答案打印(詳細信息['item']。text);證實了這一點。如果我刪除toObservable,它仍然不會打印該項目。畢竟,我問了這個問題,因爲我的代碼沒有工作。 –

+0

我明白了。我無法想象這是如何相關的。也許你在應用程序中使用它的方式不同。例如,當您從服務器加載國家或在加載應用程序後以任何其他方式修改列表的內容時,您肯定需要'toObservable' –

相關問題