focus: {
inserted: function(el, { modifiers: { noKeyboard } }) {
try {
const tagName = el.tagName;
if (tagName !== 'INPUT') {
const child = el.children[0];
if (child && child.tagName === 'INPUT') {
el = child;
}
}
el.focus();
if (noKeyboard) {
el.setAttribute('readonly', 'readonly');
var timer = null;
timer = setTimeout(() => {
el.removeAttribute('readonly');
clearTimeout(timer);
}, 100);
}
} catch (error) {
throw new Error(error);
}
}
},
el是一个dom元素,然后进来先判断el是不是input表单标签,如果不是,就判断它的children[0]元素是不是input标签,是的话将el指向它的子元素这个input标签,然后让el聚焦,如果你传进来的noKeyboard是true,则给它设置0.1s的只读,就是不允许编辑,0.1s后解除只读状态。
vue里面的自定义指令吧这是,inserted是内部提供的方法,固定的。
https://cn.vuejs.org/v2/guide/custom-directive.html