Vue.js 我把ref放在我的输入中,但我可以';我不能专注于它,为什么?

Vue.js 我把ref放在我的输入中,但我可以';我不能专注于它,为什么?,vue.js,Vue.js,我想做一个基本的todo应用程序。输入和标签位于彼此的顶部。在我的状态中有一个变量“editMode”,默认为false。 如果“editMode”为真,我的标签将消失,输入将出现。我把 @DBL单击我的标签。当调用的“editMode”将变为真时,我想集中输入字段 我把ref放在输入元素上。所以用户双击标签,我想用“this.$refs.input.focus()”来聚焦我的输入。我也尝试了这个。$nextTick 这是我的模板 <div class="todo"> &

我想做一个基本的todo应用程序。输入和标签位于彼此的顶部。在我的状态中有一个变量“editMode”,默认为false。 如果“editMode”为真,我的标签将消失,输入将出现。我把 @DBL单击我的标签。当调用的“editMode”将变为真时,我想集中输入字段

我把ref放在输入元素上。所以用户双击标签,我想用“this.$refs.input.focus()”来聚焦我的输入。我也尝试了这个。$nextTick

这是我的模板

  <div class="todo">
    <div class="todo-left">
      <input type="checkbox" class="completed"/>
    </div>
    <div class="todo-middle">
      <label v-if="!editMode" @dblclick="activateEditMode">{{text}}</label>
      <input type="text" v-model="text" v-show="editMode" ref="input">
    </div>
    <div class="todo-right" v-if="!editMode">
      <span>❌</span>
    </div>
  </div>
</template>

{{text}}
❌
这是剧本

<script>
export default {
    name:'TodoItem',
    data:function(){
      return {
        editMode:false,
        text:'Go to shopping'
      }
    },
    methods:{
      activateEditMode:function(){
        this.editMode=true;
        this.$nextTick(()=>{
          this.$refs.input.focus()
        })

      },
      onClickOutside:function(e){
        const { input} =this.$refs
        if(input && !input.contains(e.target)){
          this.editMode=false
        }

      }
    },
    mounted() {
        document.addEventListener("click", this.onClickOutside);
    },
    beforeDestroy() {
        document.removeEventListener("click", this.onClickOutside);
    }

}
</script>

导出默认值{
名称:'TodoItem',
数据:函数(){
返回{
编辑模式:false,
文字:“去购物”
}
},
方法:{
activateEditMode:function(){
this.editMode=true;
这个.$nextTick(()=>{
这是。$refs.input.focus()
})
},
onClickOutside:函数(e){
常量{input}=this.$refs
if(input&!input.contains(e.target)){
this.editMode=false
}
}
},
安装的(){
document.addEventListener(“单击”,this.onClickOutside);
},
在…之前{
document.removeEventListener(“单击”,this.onClickOutside);
}
}

它很好用——是的,很好用。我已经找了三个小时的解决办法了。我唯一没有尝试的就是重新启动应用程序。