使用聚合物铁选择器事件

时间:2015-07-27 07:06:12

标签: javascript polymer dhtml

这是我用铁选择器

的(删节)代码
...
<iron-selector id="listSelection" attr-for-selected="name" on-tap="_itemSelected">
    <template is="dom-repeat" items="{{boilerplateSets}}">
      <div class="item" name='{{item.name}}'>
        <paper-icon-item >
          <paper-item-body two-line>
            <div>{{item.name}}</div>
            <div secondary>{{item.description}}</div>
          </paper-item-body>
          <iron-icon class="big-icon" icon="hardware:keyboard-arrow-right"></iron-icon>
        </paper-icon-item>
        <paper-ripple></paper-ripple>
      </div>
    </template>
...

遵循此脚本(也删节)

<script>
Polymer
(
    {
        is: 'boilerplate-list',
        ready: function()
        {
        this.boilerplateSets = [{name: 'CVs', description: 'Bolierplates'},
                               {name: 'Addresses', description:                                    
                               'Boilerplates'},];
        },
        behaviors: 
        [
            Polymer.NeonAnimatableBehavior
        ],
        _itemSelected: function(e,detail)
         {
                 console.log("selected e:" + e.name);
                 console.log("selected detail:" + detail.name);

                 var _selected = this.$.listSelection.selectedItem;
                 console.log('selected item:' + _selected);
                 this.fire('select',{item: _selected});
        },
      ...
    }
);
</script>

我在两条战线上挣扎:

  1. 我使用哪个属性/属性来访问所选项的值?在此示例中,我尝试将其配置为使用“name”值。这在此示例中不起作用。我有它工作,但不记得如何;排列可能包括“item.name”或“{{name}}”或“{{item.name}}”。

  2. 我有一个竞争条件。 on-tap事件触发并调用_ItemSlected。但是当我读取此函数中的值时,它们不会更新。第二次点击并获取事件以触发值现在已设置,但要准确到最后一个选择。

  3. 我非常重视铁选择器与绑定(即使用{})以及触发事件(包括使用arr-for-selected和on-tap事件)的正常例子。

    谢谢。

2 个答案:

答案 0 :(得分:2)

我在整个“竞争条件”问题上遇到了同样的问题。我没有使用“on-tap”,而是使用“on-iron-select”。这样可确保在首次选择之前不会调用该函数。

因此,使用您的代码,请更改此内容:

    <iron-selector id="listSelection" attr-for-selected="name" on-tap="_itemSelected">

到此:

    <iron-selector id="listSelection" attr-for-selected="name" on-iron-select="_itemSelected">

希望这有助于解决此问题的其他任何人。

答案 1 :(得分:0)

要解决您的第一个问题,您可以在WITH Cte AS( SELECT Manager, x, y, RN = ROW_NUMBER() OVER( PARTITION BY Manager, CASE WHEN x <= y THEN x ELSE y END, CASE WHEN x <= y THEN y ELSE x END ORDER BY Measure DESC ), Measure = SUM(Measure) OVER( PARTITION BY Manager, CASE WHEN x <= y THEN x ELSE y END, CASE WHEN x <= y THEN y ELSE x END ) FROM tbl ) SELECT Manager, x, y, Measure FROM Cte WHERE Rn = 1 处理程序中使用itemForElement

_itemSelected

this.$.myList.itemForElement(e.target); 模板上的myList属性为id

dom-repeat

我不确定竞争条件问题。在我完成此操作的地方,我实际上已将<iron-selector> <template id="myList" is="dom-repeat" items="{{someItems}}"></template> </iron-selector> 事件置于(在您的示例中)on-tap