Binding dom内的聚合物类绑定重复不起作用

Binding dom内的聚合物类绑定重复不起作用,binding,polymer-1.0,dom-repeat,Binding,Polymer 1.0,Dom Repeat,我试图将计算值绑定到dom重复模板中的元素 <iron-selector class="dropdown-content" selected="0"> <template is="dom-repeat" items="[[items]]"> <div class$="item {{_itemClass(selectedItems)}}" data-value="[[item]]" on-click="_onItemClick">[[item]

我试图将计算值绑定到dom重复模板中的元素

<iron-selector class="dropdown-content" selected="0">
   <template is="dom-repeat" items="[[items]]">
      <div class$="item {{_itemClass(selectedItems)}}" data-value="[[item]]" on-click="_onItemClick">[[item]]</div>
   </template>
</iron-selector>

我没有测试您的问题,但我自己也在使用类似的模式。我猜Polymer不支持在同一个标记中声明类和绑定类

我改用属性和属性选择器,这和预期的一样

能否尝试将类更改为基于属性选择器的属性和样式?以下是相关代码:

<style>

.item[selected] {
  font-weight: bold;
}

</style>

...

<template is="dom-repeat" items="[[items]]">
  <div class="item" selected$="[[_computeSelected]]" on-tap="_onItemTap">[[item]]</div>
</template>


_onItemTap: function(event) {
  const item = event.model.item;
},

_computeSelected: function(item) (
  return yourSelectionLogic ? true : false;
}

.项目[已选]{
字体大小:粗体;
}
...
[[项目]]
_MTAP:函数(事件){
const item=event.model.item;
},
_computeSelected:函数(项)(
返回您的SelectionLogic?真:假;
}

另外两个注意事项:使用点击而不是点击。它使移动触摸事件与桌面事件规范化。此外,您不需要绑定每个项目的数据值,因为在dom重复中触发点击事件时,每个项目都包含数据值。

我还没有测试您的问题,但我自己也在使用类似的模式。我猜是这样的mer不支持在同一标记中声明类和绑定类

我改用属性和属性选择器,这和预期的一样

能否尝试根据属性选择器将类更改为属性和样式?以下是相关代码:

<style>

.item[selected] {
  font-weight: bold;
}

</style>

...

<template is="dom-repeat" items="[[items]]">
  <div class="item" selected$="[[_computeSelected]]" on-tap="_onItemTap">[[item]]</div>
</template>


_onItemTap: function(event) {
  const item = event.model.item;
},

_computeSelected: function(item) (
  return yourSelectionLogic ? true : false;
}

.项目[已选]{
字体大小:粗体;
}
...
[[项目]]
_MTAP:函数(事件){
const item=event.model.item;
},
_computeSelected:函数(项)(
返回您的SelectionLogic?真:假;
}

另外两个注意事项:使用点击而不是点击。它使移动触摸事件与桌面事件规范化。此外,您不需要绑定每个项目的数据值,因为在dom重复中触发时,它通过点击事件包含。

您的绑定是
\u itemClass(selectedItems)
它仅在变量selectedItems更改时触发,而不是在数组发生变化时触发

您有两个选择:

1) 将您的绑定更改为
\u itemClass(selectedItems.*)
,这将由
此按钮和其他数组变异方法触发

2) 每次更改变量:

this.set('selectedItems', [].concat(this.selectedItems).concat(value));

第一个解决方案(以及注释掉的第二个解决方案)的工作示例可用

您的绑定是
\u itemClass(selectedItems)
,它仅在变量selectedItems更改时触发,而不是在数组发生变化时触发

您有两个选择:

1) 将您的绑定更改为
\u itemClass(selectedItems.*)
,这将由
此按钮和其他数组变异方法触发

2) 每次更改变量:

this.set('selectedItems', [].concat(this.selectedItems).concat(value));

第一个解决方案(以及注释掉的第二个解决方案)的工作示例可用

首先,感谢您提供关于点击事件和作为参数的数据值的提示。绑定到类属性是有文档记录的,所以我假设这是可能的。我试着按照您描述的那样做,但是只在第一次迭代时计算
selected$
属性。我希望它是动态的。因此,当我更改选择时,将计算该值。这仍然不起作用。在这种情况下,最干净的选项可能是更新items数组中的基础数据。这将触发新的计算。这样,您就有了一个真相来源。“我猜Polymer不支持在同一个标记中声明类和绑定类。”这个案例属于Polymer,并且由Polymer支持。首先,感谢您提供有关tap事件和作为参数的数据值的提示。绑定到类属性是有文档记录的,所以我假设这是可能的。我试着按照您描述的那样做,但是只在第一次迭代时计算
selected$
属性。我希望它是动态的。因此,当我更改选择时,将计算该值。这仍然不起作用。在这种情况下,最干净的选项可能是更新items数组中的基础数据。这将触发新的计算。这样,你就有了一个真理的来源。“我的猜测是Polymer不支持在同一个标记中声明类和绑定类。”这种情况属于Polymer,并且由Polymer支持。