Polymer 警告 如果项目和所选项目都有初始值,并且项目是基于所选项目计算的,则事情会变得棘手-可能会在设置初始值之前运行计算,具体取决于声明顺序
当Polymer 警告 如果项目和所选项目都有初始值,并且项目是基于所选项目计算的,则事情会变得棘手-可能会在设置初始值之前运行计算,具体取决于声明顺序,polymer,polymer-1.0,Polymer,Polymer 1.0,当items位于第一位时,顺序似乎是items value、selected value、items compute和items compute。items具有初始值 当selected首先被取消关联时,然后首先运行选中的值,从而触发项目计算。现在,如果items compute返回undefined,则采用items value,但如果items compute返回值,则items value似乎从未使用过(通过在\u computeItems中取消注释代码进行检查) 您介意在jsBin中显示
items
位于第一位时,顺序似乎是items value、selected value、items compute和items compute。items具有初始值
selected
首先被取消关联时,然后首先运行选中的值,从而触发项目计算。现在,如果items compute返回undefined,则采用items value,但如果items compute返回值,则items value似乎从未使用过(通过在\u computeItems
中取消注释代码进行检查)您介意在jsBin中显示一些代码吗?我尝试了你所描述的各种组合。对不起,我尝试过,但很难理解你到底想要实现什么。如果你能简化你的代码,我可以再看看。我自己不是用JS开发的(只有Dart),所以JS对我来说很难。你介意在jsBin中展示一些代码吗?我尝试了你所描述的各种组合。对不起,我尝试过,但很难理解你到底想要实现什么。如果你能简化你的代码,我可以再看看。我自己不开发JS(只有Dart),因此JS对我来说很难。
Lorem,Ipsum,foo,1,bar,1,baz,0,qux,0
Lorem,Ipsum,foo,0,bar,0,baz,0,qux,0
Lorem,Ipsum,foo,1,bar,1,baz,0,qux,0
<!doctype html>
<head>
<meta charset="utf-8">
<base href="https://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link href="polymer/polymer.html" rel="import">
</head>
<body>
<dom-module id="x-element">
<template>
<button on-tap="_show">Show</button>
<div>{{selected}}</div>
<div>{{items}}</div>
</template>
<script>
(function(){
Polymer({
is: 'x-element',
properties: {
items: {
type: Array,
notify: true,
reflectToAttribute: true,
computed: '_computeItems(selected)',
value: function() {
return [['Lorem', 'Ipsum'], ['foo', 0], ['bar', 0], ['baz', 0], ['qux', 0],];
}
},
selected: {
type: Array,
notify: true,
reflectToAttribute: true,
},
},
_computeItems: function(a) {
var out = this.items,
selectedLength = a.length,
i = out.length;
while(i---1){
var j = selectedLength;
while(j--) {
if(a.indexOf(out[i][0])===-1){
out[i][1] = 0;
}
else if(a.indexOf(out[i][0])>-1){
out[i][1] = 1;
}
else {
console.log('Error: Undefined index of selected item');
}
}
}
return out;
},
ready: function(){
this.set('items', this._computeItems(this.seletcted));
},
_show: function() {
console.log('Selected: ' + this.selected);
console.log('Items: ' + this.items);
},
});
})();
</script>
</dom-module>
<x-element
selected='["foo","bar"]'
></x-element>
</body>