I have an iron-form to do CRUD in my project. This works well, apart of one problem.
How can I get the paper-dropdown-menu to show the value from the model data ? (That is: preselect paper-item corresponding to the [[o.id]] value from my model data)
The selected attribute of paper-menu does not help because it's index-based and not based on the value of a paper-item.
Here is the code of the form:
<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>
First, you cannot use selected-item for two-way data binding 'cause it's read-only.
Instead, you should be using selected on the paper-menu like this -
<paper-menu id="menu" class="dropdown-content" selected="{{selectedValue}}" attr-for-selected="value">
Note that you need to specify the attr-for-selected to tell the selected property which attribute to use for selection. You also need to create a selectedValue property in your element to update the selected property via binding.
Initially, I specified the selectedValue property in Polymer's ready function and it didn't work. I suspect this might be because the selected property was set too early, before the repeating templates were rendered.
So instead of setting it inside ready, I set it in attached -
attached: function () {
this.async(function () {
this.selectedValue = 1;
});
}
And this time it works.
To pre-select items in the paper-dropdown-menu you can add the properties selected and attr-for-selected in the element used as dropdown-content (e.g. paper-menu or paper-listbox).
<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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With