单击元素时如何在Firefox中获取VueJS $事件?

时间:2017-09-18 09:32:58

标签: javascript vue.js vuejs2 vue-component

当用户点击菜单时,我正在使用VueJS 2.3.0来更改图片和其他信息。

菜单由VueJS模板从JSON数据源生成:

<template id=\"rac-menu\">
    <ul class=\"col-md-3\" v-show=\"!ajanlatkeres\">
        <li v-for=\"model in models\" model=\"model\">
            <a href=\"javascript:;\"
               class=\"rac_setactive\"
               v-on:click=\"setActive(\$event)\"
               :data-id=\"model.id\">
                   {{ model.name }}
             </a>
        </li>
    </ul>
</template>

以下是VueJS脚本代码:

Vue.component('racmenu', {
    template: '#rac-menu',
    data: function() {
        var models = {};
        for (var id in rac_data ) {
            models[id] = {};
            models[ id ]['id'] = id;
            models[ id ]['name'] = rac_data[id].modell;
        }
        return {models: models};
    },
    props: ['model','ajanlatkeres'],
    methods: {
        setActive: function(e) {
            bus.\$emit('set-rac-content', e.path[0].dataset.id);
        },
    }
});

在Chrome中,一切都很好,但在Safari和Firefox中我收到错误:TypeError: e.path is undefined

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

e.path是仅镀铬属性。 尝试用e.target替换e.path [0]

如果不起作用,则有composPath .. 看看this问题

答案 1 :(得分:1)

在html调用setActive中,默认情况下不是setActive($ event):

<a href=\"javascript:;\"
   class=\"rac_setactive\"
   v-on:click=\"setActive\"
   :data-id=\"model.id\">
   {{ model.name }}
</a>

在功能使用中:

setActive: function(e) {
   bus.\$emit('set-rac-content', e.target.path[0].dataset.id);
}