Commit 2a7765f93d23cab86afdb80e89bf656fe5207dac
1 parent
f9a6a467
update Menu
Showing
2 changed files
with
23 additions
and
10 deletions
Show diff stats
src/components/button/button.vue
| ... | ... | @@ -102,7 +102,7 @@ |
| 102 | 102 | }, |
| 103 | 103 | methods: { |
| 104 | 104 | // Ctrl or CMD and click, open in new window when use `to` |
| 105 | - handleClickLink (event, new_window) { | |
| 105 | + handleClickLink (event, new_window = false) { | |
| 106 | 106 | this.$emit('click', event); |
| 107 | 107 | |
| 108 | 108 | this.handleCheckClick(event, new_window); | ... | ... |
src/components/menu/menu-item.vue
| 1 | 1 | <template> |
| 2 | - <a v-if="to" :href="linkUrl" :target="target" :class="classes" @click="handleClickItem" :style="itemStyle"><slot></slot></a> | |
| 2 | + <a | |
| 3 | + v-if="to" | |
| 4 | + :href="linkUrl" | |
| 5 | + :target="target" | |
| 6 | + :class="classes" | |
| 7 | + @click.exact="handleClickItem($event, false)" | |
| 8 | + @click.ctrl="handleClickItem($event, true)" | |
| 9 | + @click.meta="handleClickItem($event, true)" | |
| 10 | + :style="itemStyle"><slot></slot></a> | |
| 3 | 11 | <li v-else :class="classes" @click.stop="handleClickItem" :style="itemStyle"><slot></slot></li> |
| 4 | 12 | </template> |
| 5 | 13 | <script> |
| ... | ... | @@ -46,18 +54,23 @@ |
| 46 | 54 | } |
| 47 | 55 | }, |
| 48 | 56 | methods: { |
| 49 | - handleClickItem (event) { | |
| 57 | + handleClickItem (event, new_window = false) { | |
| 50 | 58 | if (this.disabled) return; |
| 51 | 59 | |
| 52 | - let parent = findComponentUpward(this, 'Submenu'); | |
| 53 | - | |
| 54 | - if (parent) { | |
| 55 | - this.dispatch('Submenu', 'on-menu-item-select', this.name); | |
| 60 | + if (new_window) { | |
| 61 | + // 如果是 new_window,直接新开窗口就行,无需发送状态 | |
| 62 | + this.handleCheckClick(event, new_window); | |
| 56 | 63 | } else { |
| 57 | - this.dispatch('Menu', 'on-menu-item-select', this.name); | |
| 58 | - } | |
| 64 | + let parent = findComponentUpward(this, 'Submenu'); | |
| 59 | 65 | |
| 60 | - this.handleCheckClick(event); | |
| 66 | + if (parent) { | |
| 67 | + this.dispatch('Submenu', 'on-menu-item-select', this.name); | |
| 68 | + } else { | |
| 69 | + this.dispatch('Menu', 'on-menu-item-select', this.name); | |
| 70 | + } | |
| 71 | + | |
| 72 | + this.handleCheckClick(event, new_window); | |
| 73 | + } | |
| 61 | 74 | } |
| 62 | 75 | }, |
| 63 | 76 | mounted () { | ... | ... |