diff --git a/examples/routers/cascader.vue b/examples/routers/cascader.vue index 4cf2b22..6f35c63 100644 --- a/examples/routers/cascader.vue +++ b/examples/routers/cascader.vue @@ -1,11 +1,19 @@ <template> - <Cascader v-model="value3" :data="data" filterable @on-change="hc"></Cascader> + <div style="margin: 100px;width: 300px;"> + <Cascader v-model="value" :data="data" change-on-select></Cascader> + </div> </template> <script> export default { data () { return { - data: [{ + value: ['beijing', 'gugong'], + data: [] + } + }, + mounted () { + setTimeout(() => { + this.data = [{ value: 'beijing', label: '北京', children: [ @@ -51,14 +59,8 @@ ] } ], - }], - value3: [] - } - }, - methods: { - hc (a,b) { - console.log(a,b) - } + }]; + }, 100) } } </script> diff --git a/src/components/cascader/cascader.vue b/src/components/cascader/cascader.vue index 1d24fd1..ae2810a 100644 --- a/src/components/cascader/cascader.vue +++ b/src/components/cascader/cascader.vue @@ -258,8 +258,9 @@ updateResult (result) { this.tmpSelected = result; }, - updateSelected (init = false) { - if (!this.changeOnSelect || init) { + updateSelected (init = false, changeOnSelectDataChange = false) { + // #2793 changeOnSelectDataChange used for changeOnSelect when data changed and set value + if (!this.changeOnSelect || init || changeOnSelectDataChange) { this.broadcast('Caspanel', 'on-find-selected', { value: this.currentValue }); @@ -386,7 +387,7 @@ if (validDataStr !== this.validDataStr) { this.validDataStr = validDataStr; if (!this.isLoadedChildren) { - this.$nextTick(() => this.updateSelected()); + this.$nextTick(() => this.updateSelected(false, this.changeOnSelect)); } this.isLoadedChildren = false; } -- libgit2 0.21.4