Polymer2.0三级联动示例

<link rel="import" href="../../bower_components/polymer/polymer-element.html">
<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu-shared-styles.html">
<link rel="import" href="../../bower_components/neon-animation/web-animations.html">
<script href="../../bower_components/web-animations-js/web-animations-next-lite.min.js"></script>
<link rel="import" href="../../bower_components/paper-item/paper-item.html">
<link rel="import" href="../../bower_components/paper-listbox/paper-listbox.html">
<meta charset="utf-8">
<dom-module id="three-level-linkage">
    <template>

        <paper-dropdown-menu label="请选择">
            <paper-listbox slot="dropdown-content" class="dropdown-content" selected="{{layer1Selected}}">
                <dom-repeat items="[[data]]">
                    <template>
                        <paper-item>[[item.name]]</paper-item>
                    </template>
                </dom-repeat>
            </paper-listbox>
        </paper-dropdown-menu>


        <paper-dropdown-menu label="请选择">
            <paper-listbox slot="dropdown-content" class="dropdown-content" selected="{{layer2Selected}}">
                <dom-repeat items="[[layer2]]">
                    <template>
                        <paper-item>[[item.name]]</paper-item>
                    </template>
                </dom-repeat>
            </paper-listbox>
        </paper-dropdown-menu>

        <paper-dropdown-menu label="请选择">
            <paper-listbox slot="dropdown-content" class="dropdown-content" selected="{{layer3Selected}}">
                <dom-repeat items="[[layer3]]">
                    <template>
                        <paper-item>[[item.name]]</paper-item>
                    </template>
                </dom-repeat>

            </paper-listbox>
        </paper-dropdown-menu>
    </template>
    <script>
        class ThreeLevelLinkage extends Polymer.Element {
            static get is() {
                return 'three-level-linkage';
            }

            static get properties() {
                return {
                    data: {
                        type: Array,
                        value: function () {
                            let arr = [];

                            for (let i = 0; i < 10; i++) {
                                arr[i] = {name: `a${i}`, value: []};
                                for (let j = 0; j < 10; j++) {
                                    arr[i].value[j] = {name: `a${i}b${j}`, value: []};
                                    for (let k = 0; k < 10; k++) {
                                        arr[i].value[j].value[k] = {name: `a${i}b${j}c${k}`};
                                    }
                                }
                            }

                            return arr; 
                        }
                    },
                    layer2: Array,
                    layer3: Array,
                    layer1Selected: Number,
                    layer2Selected: Number,
                    layer3Selected: Number
                }

            }

            static get observers() {
                return [
                    'layer1Changed(layer1Selected)',
                    'layer2Changed(layer2Selected)',
                ]
            }

            layer1Changed(index) {
                this.layer2 = this.data[index].value;
                this.layer2Selected = 1;             // 刷新
                setTimeout( () => {
                    this.layer2Selected = 0;         // 刷新
                },0);
            }

            layer2Changed(index) {
                this.layer3 = this.layer2[index].value;
                this.layer3Selected = 1;
                setTimeout( () => {
                    this.layer3Selected = 0;
                },0);
            }

        }

        customElements.define(ThreeLevelLinkage.is, ThreeLevelLinkage);
    </script>
</dom-module>
<three-level-linkage></three-level-linkage>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值