如何在Dart端捕获dom重复模板(或铁链表)的item model.index?
在以下示例中: captureIndex.html如何在Dart端捕获dom重复模板(或铁链表)的item model.index?,dart,dart-polymer,Dart,Dart Polymer,在以下示例中: captureIndex.html <template id="lista_produtos" is="dom-repeat" items="{{produtos}}" as="item"> ... <paper-input label="Custo" value="{{item.aquisicao_custo}}"type="number" on-change="calcularPrecoSugeridoEvento"><div pre
<template id="lista_produtos" is="dom-repeat" items="{{produtos}}" as="item">
...
<paper-input label="Custo" value="{{item.aquisicao_custo}}"type="number" on-change="calcularPrecoSugeridoEvento"><div prefix>R$</div></paper-input>
...
</template>
我想捕获model.index。但它是空的
我不想在事件中使用html标记,通常建议:
...
<template id="lista_produtos" is="dom-repeat" items="{{produtos}}" as="item">
<paper-input id={{index}} on-change="eventX></paper-input>
</template>
...
...
void event (e, d) {
window.alert((e).attributes['id']));
}
...
。。。
id={{index}}
是个坏主意
您不应该绑定到id
属性李>
id
属性不能以数字开头id=“123”
无效id=“a123”
或id=“\u 123”
将起作用,但仍不应绑定到id
属性李>
如果不想使用HTML属性,可以使用
@reflectable
calcularPrecoSugeridoEvento(dom.Event event, [_]) {
($['lista_produtos'] as DomRepeat)
.modelForElement(event.target).jsElement['index'];
}
如果确实要使用HTML属性,则需要在属性名称中添加“$”以实际绑定到属性(反映在DOM中),而不是属性(仅限JS):
对于
,我成功地使用了这两个变体来获得DOMReatModel
@reflectable
event([dom.Event event, _]) {
DomRepeatModel model = ($['lista_produtos'] as DomRepeat)
.modelForElement(event.target);
// or
model =
new DomRepeatModel.fromEvent(convertToJs(event));
var index = model.index;
}
您的HTML在问题标题中使用is=dom if
,否则dom repeat
。你到底想知道什么?我编辑过。它没有is=dom-if。但也没有is=“dom repeat”
?不是!再次编辑!谢谢好的,现在我想我明白了。我的回答显示了一些实现您所需的方法。甘特,我获得的数据model.item
!但是我想要索引。在model中,我们有model.index
属性,但它返回了我想要的上一个示例!但是,对我来说,var index=model.jsElement['index']
returnnull。我正在使用Polymer 1.0 RC2和SDK 1.12.1。对不起,我没有主意了。我又试了一次,效果很好。您可以尝试签出我的示例以检查它是否也适用于您。。。甘特,你帮了大忙!谢谢!
<paper-input data-index={{index}} on-change="calcularPrecoSugeridoEvento></paper-input>
new PolymerEvent(event).localTarget.dataset['index']
// or
new PolymerEvent(event).localTarget.attributes['data-index']
@reflectable
event([dom.Event event, _]) {
DomRepeatModel model = ($['lista_produtos'] as DomRepeat)
.modelForElement(event.target);
// or
model =
new DomRepeatModel.fromEvent(convertToJs(event));
var index = model.index;
}