項目的一個需求,記錄分享一下,希望幫助別人少踩坑。先簡單說一下需求:左側是tree結構,右側是表單,實現功能就是點擊tree節點,對應的右側input獲取焦點

注冊自定義指令
指令可以是全局注冊也可以是局部注冊,看你自己的想法嘍,我這塊是實現的全局注冊
directives: {
focus: {
// 綁定判斷
inserted: function(el, { value }) {
if (value) {
el.children[0].focus();
}
},
//更新判斷
update: function(el, { value }) {
if (value) {
el.children[0].focus();
}
},
//更新完成s
componentUpdated: function(el, { value }) {}
}
}
!!!非常重點的就是el.children[0]。具體看圖

我覺得大家應該明白了,為啥是第一個子元素了,因為element渲染后,結構是div包着input,你的指令給div是沒有任何效果滴。需要注意這塊
邏輯代碼
光指令了,沒有邏輯代碼也是不行滴啊,我就順便貼出來吧,反正也不費事請。(保證指令的正常更新,每次只有一個input選中)
updateFocusStatus(id) { let _this = this; let children = _this.data[0].children; if (children[id].focus) { children[id].focus = !children[id].focus; return; } children.map(n => { n.id != id ? (n.focus = false) : (n.focus = true); }); }, handleNodeClick(data) { let _this = this; console.log(data.id + ":" + data.focus); _this.updateFocusStatus(data.id); }
結尾:希望自己每天都可以進步一點點。努力!
