使用VueJS 2.0和vue-mdl菜单组件,如何响应点击事件?

时间:2016-11-17 00:27:27

标签: javascript vue.js vue-component

它似乎没有响应@click,但v-bind:click确实注册了。但是,我无法在指令中添加方法,因为我无法访问mdl-menumdl-menu-item组件来添加方法。

我尝试使用四个菜单选项@click="setStatus('field-name', 'value')"执行某些操作(每个选项都有不同的value,相同的field-name)。

我觉得VueJS的一个元素我还没有意识到,或者它会成为事件的幻想。

我尝试添加内联代码bus.$emit('event', 'data'),但没有任何反应(没有错误,控制台中没有任何内容,没有任何内容)

示例元素:

<span class="bar" v-on:click="clicked">
  <mdl-button icons raised colored
              v-bind:id="generateId('av')"
              v-bind:class="getButtonClass(row.avStatus)"
              v-bind:title="row.avStatus"
  >
      <i class="material-icons">videocam</i>
  </mdl-button>

  <mdl-menu v-bind:for="generateId('av')">
      <mdl-menu-item data-field="avStatus">Open</mdl-menu-item>
      <mdl-menu-item data-field="avStatus">In Progress</mdl-menu-item>
      <mdl-menu-item data-field="avStatus">Review</mdl-menu-item>
      <mdl-menu-item data-field="avStatus">Ready</mdl-menu-item>
  </mdl-menu>
</span>

修改1

所以昨晚我将点击事件发送到工作,但我不确定它是否是正确的方法(感觉非常凌乱)。

我所做的是将v-on:click="clicked"听众添加到父span,然后在clicked()方法中添加:

if (e.target.className == "mdl-menu__item") { /* code */ }

仅在单击菜单选项时才执行操作。这感觉......错了。我不能直接在菜单选项中添加监听器,或者至少添加到父mdl-menu吗?

1 个答案:

答案 0 :(得分:1)

Use the .native modifier on the click。在组件而不是本机html节点上使用v-on时,vue仅查找使用$emit声明的子组件的自定义事件中的事件,添加.native将使vue将其视为本地事件。