Ich laufe auf Problem, wenn versucht wird, den geänderten Wert von <select>
Elemente innerhalb <dom-repeat>
Vorlage zu erhalten (Dart 1.17.1 + Polymer 1.0.0-rc.15). Mein Code ist wie folgt:Wie erhalten Sie ausgewählte Option innerhalb DOM-Wiederholungsvorlage in Dart?
HTML, shop.html
<template is="dom-repeat" items="[[shop.itemList]]">
<div class="md-row">
<div class="md-cell">[[item.name]]</div>
<div class="md-cell"><input type="text" is="iron-input" name="quantity" bind-value="{{item.quantity}}" size="20" maxlength="20"></div>
<div class="md-cell">
<select name="size" selectedIndex="{{item.selected}}" value="{{item.itemSize}}" on-tap="changeSize" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</template>
Dart, shop.dart
@PolymerRegister('shop')
class Shop extends PolymerElement {
@Property(notify: true)
List<ShopItem> itemList = [];
@reflectable
changeSize(event, detail) {
var model = new DomRepeatModel.fromEvent(event);
print('Change Size');
print(model.item.itemSize);
}
Shop.created() : super.created();
ready() {
set("itemList", [new ShopItem(name: "Milk"), new ShopItem(name: "Butter")]);
}
}
class ShopItem extends JsProxy {
@reflectable String id;
@reflectable String name;
@reflectable num quantity;
String _itemSize = '2';
@reflectable
String get itemSize => _itemSize;
void set itemSize(String s) {
_itemSize = s;
print("Changed Size " + _itemSize);
}
num _selected = 3;
@reflectable
num get selected => _selected;
void set selected(num s) {
_selected = s;
print("Changed selected" + _selected.toString());
}
}
Wenn size
aus dem Element <select>
Auswahl der ausgewählte Wert tut Aktualisieren Sie das Modell nicht. So erhält der Aufruf an changeSize()
immer den gleichen Wert. Hat jemand einen Rat, wie man das löst?
Ich denke Array-Selektor https://www.polymer-project.org/1.0/docs/devguide/templates ist, was Sie suchen. Es ist eine Weile, ich habe es selbst verwendet, daher kenne ich keine Details mehr, aber der Link enthält ein Beispiel. –