2015-09-04 32 views
3

我有一個iron-form在我的項目中做CRUD。除了一個問題之外,這很有效。如何從模型數據中預先選擇紙張下拉菜單中的紙張項目?

我怎樣才能讓paper-dropdown-menu顯示模型數據的值? (即:預選paper-item對應於我的模型數據[o.id]值)

paper-menuselected屬性沒有幫助,因爲它的指數爲基礎的,而不是根據paper-item的價值。

這裏是形式的代碼:

<form is="iron-form" id="itemForm" method="post" action="/api/item/edit"> 

    <input is="iron-input" name="id" type="hidden" value="{{item.id}}"> 

    <paper-dropdown-menu label="Title" selected-item="{{selectedTitle}}"> 
     <paper-menu class="dropdown-content"> 
      <template is="dom-repeat" items="{{titles}}" as="o"> 
       <paper-item value="[[o.id]]">[[o.name]]</paper-item> 
      </template> 
     </paper-menu> 
    </paper-dropdown-menu> 
    <input is="iron-input" name="title" type="hidden" value$="[[selectedTitle.value]]"> 

    <paper-input name="firstName" label="First name" value="{{item.firstName}}"></paper-input> 

    <paper-button raised onclick="document.getElementById('itemForm').submit()">Save</paper-button> 
</form> 

回答

6

首先,你不能爲雙向數據綁定使用selected-item「因爲它是只讀

相反,你應該在paper-menu這樣使用selected -

<paper-menu id="menu" class="dropdown-content" selected="{{selectedValue}}" attr-for-selected="value"> 

請注意,您需要指定attr-for-selected告訴selected財產屬性,用於進行選擇。您還需要在元素中創建一個selectedValue屬性,以通過綁定更新selected屬性。

最初,我在Polymer的ready函數中指定了selectedValue屬性,但它不起作用。我懷疑這可能是因爲在渲染重複模板之前selected屬性設置得太早。

attached: function() { 
    this.async(function() { 
    this.selectedValue = 1; 
    }); 
} 

而這個時候it作品 -

因此,而不是將它設置裏面ready,我在attached設置。在paper-dropdown-menu

2

預先選擇的項目可以在用作dropdown-content(例如paper-menupaper-listbox)添加元素的屬性selectedattr-for-selected和。

<paper-dropdown-menu> 
    <paper-listbox attr-for-selected="data-order" selected="1" class="dropdown-content"> 
    <paper-item data-order="0">First</paper-item> 
    <paper-item data-order="1">Second</paper-item> 
    <paper-item data-order="2">Third</paper-item> 
    </paper-listbox> 
</paper-dropdown-menu> 
相關問題