它似乎没有响应@click
,但v-bind:click
确实注册了。但是,我无法在指令中添加方法,因为我无法访问mdl-menu
或mdl-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
吗?
答案 0 :(得分:1)
Use the .native
modifier on the click
。在组件而不是本机html节点上使用v-on
时,vue仅查找使用$emit
声明的子组件的自定义事件中的事件,添加.native
将使vue将其视为本地事件。