Polymer 聚合物:在不接触阵列顺序的情况下重复恢复/订购项目
这似乎是件小事,但我找不到:Polymer 聚合物:在不接触阵列顺序的情况下重复恢复/订购项目,polymer,Polymer,这似乎是件小事,但我找不到: 如果我想在重复中反转项目的顺序,而不实际触及数组的顺序,如: <template repeat="{{layer in layers}}"> <div>{{layer.name}}</div> </template> <template repeat="{{layer in layers | reverse}}"> <div>{{layer.name}}</div> </
如果我想在重复中反转项目的顺序,而不实际触及数组的顺序,如:
<template repeat="{{layer in layers}}">
<div>{{layer.name}}</div>
</template>
<template repeat="{{layer in layers | reverse}}">
<div>{{layer.name}}</div>
</template>
...
reverse: function(arr){
return _(arr).reverse();
}
{{layer.name}
其中层是一组对象。我尝试应用过滤器,然后使用阵列的副本,如:
<template repeat="{{layer in layers}}">
<div>{{layer.name}}</div>
</template>
<template repeat="{{layer in layers | reverse}}">
<div>{{layer.name}}</div>
</template>
...
reverse: function(arr){
return _(arr).reverse();
}
{{layer.name}
...
反向:功能(arr){
返回(arr).reverse();
}
但这会导致一些观察者失败,因为他们看到的是副本而不是原始对象。我不想对原始数组应用排序,因为代码的其他部分依赖于该顺序。有人知道一个选项会影响DOM中的显示顺序吗?我认为您需要这样做
<template repeat="{{layer in temp_array}}">
<div>{{layer.name}}</div>
</template>
<script>
Polymer('el-name',{
ready: function(){
this.temp_array =[];
this.temp_array = layers.reverse();
}
}
);
</script>
{{layer.name}
聚合物(“el-name”{
就绪:函数(){
this.temp_数组=[];
this.temp_数组=layers.reverse();
}
}
);
如果您的层在就绪调用时为空,请使用change listener
<script>
Polymer('el-name',{
ready: function(){
this.temp_array =[];
},
layersChanged: function(oldValue, newValue){
if(newValue.length != 0)
this.temp_array = newValue.reverse();
}
}
);
</script>
聚合物(“el-name”{
就绪:函数(){
this.temp_数组=[];
},
图层更改:函数(旧值、新值){
如果(newValue.length!=0)
this.temp_数组=newValue.reverse();
}
}
);
希望对您有所帮助如果可以将重复的元素放置在
垂直/水平布局中
,则反向
可能会起到作用(请参阅):
{{layer.name}
我想提供一种更安全、更清晰的方法来还原数组以进行重复绑定:
{{layer.name}
聚合物({
LayerReversedChanged:函数(){
var layers=this.layersReversed.slice();
层。反向();
这个。层=层;
}
});
还有另一种有趣而奢侈的方法可以通过中间web组件实现同样的功能:
<polymer-element name="reverse-order" attributes="in out">
<template></template>
<script>
Polymer({
inChanged: function() {
var out = this.in.slice();
out.reverse();
this.out = out;
}
});
</script>
</polymer-element>
聚合物({
inChanged:函数(){
var out=this.in.slice();
out.reverse();
this.out=out;
}
});
它可以用来绑定一些顺序不同的元素。也就是说,数组是由.push()方法填充的,而首选的数组表示形式是相反的顺序:
<my-element layers="{{layersReversed}}"></my-element>
<reverse-order in="{{layers}}" out="{{layersReversed}}"></reverse-order>
<core-localstorage name="layers" value="{{layers}}"></core-localstorage>
谢谢,这确实有帮助。这有点解决问题,我希望在我的数组和DOM之间的中间,可以用聚合物来解决。我想它还不存在。