iview彈出對話方塊的input框每次都自動聚焦focus
阿新 • • 發佈:2019-02-02
1.在html裡面設定autofocus屬性。
但不難發現只會觸發一次,每次在執行起來的時候就執行了獲得焦點,之後點選就無效了。
2.在html裡面設定v-focus
使用官方例子:
directives: {
focus: {
// 指令的定義
inserted: function (el) {
el.focus()
}
}
}
發現不行,insert是一個鉤子函式,只要父節點存在,在插入父節點時呼叫,我這裡並沒有插入所以沒有呼叫。
然而自己修改後:
directives: { focus:function (el) { el.focus(); } }
發現還是不行,當把佈局中的輸入框改為input時就可以了。
3.由於先要使對話方塊彈出來,然後在讓他自動獲取焦點,所以要有先後順序,在這裡使用了modal的 on-visible-change屬性,在為true時,再加上延時就可以啦。
methods:{ aaa() { this.modal1 = true; console.log("111") }, change(val) { let a=this; setTimeout(function () { if (val) { a.$refs['re'].focus(); console.log("222") } },200); } } }