1.埋点指令
import { debounce, eventTrack } from "../utils/common"
const install = function (Vue) {
const INTERVAL = 300;
Vue.directive('tracking', {
bind(el, binding) {
el.addEventListener('click', debounce(function () {
//调用后台接口保存数据
eventTrack(binding.value)
}, INTERVAL)
, false)
}
})
Vue.prototype.$tracking = function (dictCode) {
debounce(function (dictCode) {
eventTrack(dictCode)
}, INTERVAL)(dictCode)
}
}
if (window.Vue) {
Vue.use(install); // eslint-disable-line
}
export default install
2. main.js注册指令
import directive from './directive' // directive
Vue.use(directive)
3.使用方式如下
<div class="index-tab-item" v-tracking="'shouye:shipingtai'" @click="handleChange('shi')">
切换
</div>
4.扩展debounce防抖和eventTrack请求后台
/**
* 函数防抖
*/
let timer = null;
export function debounce(fn, interval = 300) {
return function () {
clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, arguments);
}, interval);
};
}
//請求接口
export function eventTrack(code) {
let users = JSON.parse(localStorage.getItem('userinfos'));
let userInfo = {
"userId": users.id,
"userName": users.userName,
"userRealName": users.realname,
}
if (code) {
eventTracking({
eventCode: code,
...userInfo
})
}
}