Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dart端捕获dom重复模板(或铁链表)的item model.index?_Dart_Dart Polymer - Fatal编程技术网

如何在Dart端捕获dom重复模板(或铁链表)的item model.index?

如何在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

在以下示例中:

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 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;
      }