复数观测器在观测器数组中声明。复杂的观察者可以监视一条或多条路径。这些路径称为观察者的依赖关系。
我只是忘了使用复杂的观察者。我不知道为什么选择时对象会更改两次。我会尽快更新这个答案。
编辑
splice
只有由于使用了通配符(*)观察器,数组的值没有更改两次,而是在控制台上打印了两次。当观察到拼接,然后观察到阵列长度的变化时,首先调用观察者。]
<link rel="import" href="../bower_components/polymer/polymer-element.html">
<link rel="import" href="../bower_components/vaadin-grid/vaadin-grid.html">
<link rel="import" href="../bower_components/vaadin-grid/vaadin-grid-selection-column.html">
<dom-module id="schedule-vaadin-test">
<template>
<vaadin-grid id="material" aria-label="Array Data Example" items="[[items]]" selected-items="{{selectedItems}}">
<vaadin-grid-selection-column>
</vaadin-grid-selection-column>
<vaadin-grid-column width="50px" flex-grow="0">
<template class="header">#</template>
<template>[[index]]</template>
</vaadin-grid-column>
<vaadin-grid-column>
<template class="header">First Name</template>
<template>[[item.firstName]]</template>
</vaadin-grid-column>
<vaadin-grid-column>
<template class="header">Last Name</template>
<template>[[item.lastName]]</template>
</vaadin-grid-column>
</vaadin-grid>
</template>
<script>
/**
* @customElement
* @polymer
*/
class ScheduleVaadinTest extends Polymer.Element {
static get is() {
return 'schedule-vaadin-test';
}
static get properties() {
return {
items: {
type: Array,
value: [{"firstName":"Foo1", "lastName":"Bar1"},
{"firstName":"Foo2", "lastName":"Bar2"},
{"firstName":"Foo3", "lastName":"Bar3"}]
},
/*activeItem: {
type: Array,
observer: '_activeItemChanged'
},--this is not being used*/
selectedItems: {
type: Array
}
};
}
static get observers() {
return [
//'_selectedItemsChanged(selectedItems.*)'
'_selectedItemsChanged(selectedItems.splices)'
]
}
_selectedItemsChanged() {
console.log(this.selectedItems);
}
}
customElements.define(ScheduleVaadinTest.is, ScheduleVaadinTest);
</script>
</dom-module>