소스 검색

fix dropdown menu click

baiyaaaaa 8 년 전
부모
커밋
d87cfd7ff7
4개의 변경된 파일20개의 추가작업 그리고 15개의 파일을 삭제
  1. 1 1
      CHANGELOG.md
  2. 12 2
      packages/dropdown/src/dropdown-item.vue
  3. 3 3
      packages/dropdown/src/dropdown-menu.vue
  4. 4 9
      packages/dropdown/src/dropdown.vue

+ 1 - 1
CHANGELOG.md

@@ -2,7 +2,7 @@
 
 ### 1.0.0-rc.7
 
-*2016-XX-XX*
+*2016-10-13*
 
 - Upload 新增 Data 属性支持额外数据的传输
 - DatePicker 修复 `$t` 报错

+ 12 - 2
packages/dropdown/src/dropdown-item.vue

@@ -1,8 +1,18 @@
 <template>
-  <li class="el-dropdown-item"><slot></slot></li>
+  <li class="el-dropdown-item" @click="handleClick"><slot></slot></li>
 </template>
 <script>
+  import emitter from 'element-ui/src/mixins/emitter';
+
   export default {
-    name: 'ElDropdownItem'
+    name: 'ElDropdownItem',
+
+    mixins: [emitter],
+
+    methods: {
+      handleClick(e) {
+        this.dispatch('ElDropdownMenu', 'visible', [false]);
+      }
+    }
   };
 </script>

+ 3 - 3
packages/dropdown/src/dropdown-menu.vue

@@ -1,8 +1,8 @@
 <template>
   <transition name="md-fade-bottom" @after-leave="doDestroy">
-  <ul class="el-dropdown__menu" v-show="showPopper">
-    <slot></slot>
-  </ul>
+    <ul class="el-dropdown__menu" v-show="showPopper">
+      <slot></slot>
+    </ul>
   </transition>
 </template>
 <script>

+ 4 - 9
packages/dropdown/src/dropdown.vue

@@ -66,15 +66,10 @@
           triggerElm.addEventListener('mouseenter', show);
           triggerElm.addEventListener('mouseleave', hide);
 
-          let dropdown = this.$slots.dropdown[0];
-          let insertHook = dropdown.data.hook.insert;
-          dropdown.data.hook.insert = (vnode) => {
-            insertHook(vnode);
-            this.$nextTick(_ => {
-              vnode.elm.addEventListener('mouseenter', show);
-              vnode.elm.addEventListener('mouseleave', hide);
-            });
-          };
+          let dropdownElm = this.$slots.dropdown[0].elm;
+
+          dropdownElm.addEventListener('mouseenter', show);
+          dropdownElm.addEventListener('mouseleave', hide);
         } else if (trigger === 'click') {
           triggerElm.addEventListener('click', handleClick);
         }