gpt4 book ai didi

vue.js - 新增item的焦点输入

转载 作者:搜寻专家 更新时间:2023-10-30 22:29:33 24 4
gpt4 key购买 nike

所以我有一个项目列表和通过 v-for 和 v-model 链接到每个项目的输入列表。

我单击一个按钮并将新项目添加到该列表。我想关注链接到新添加项目的输入。

不知道如何实现这个目标。

<div id="app">
<div v-for="item in sortedItems">
<input v-model="item">
</div>
<button @click="addItem">
add
</button>
</div>


new Vue({
el: '#app',
data: {
items: []
},
methods: {
addItem: function() {
this.items.push(Math.random());
}
},
computed: {
sortedItems: function() {
return this.items.sort(function(i1, i2) {
return i1 - i2;
})
}
}
})

这是排序列表的 fiddle https://jsfiddle.net/sfL91r95/1/

谢谢

最佳答案

更新:受 pkawiak 评论的启发,一个基于指令的解决方案。我发现在 bind 部分调用 focus 不起作用;我不得不使用 nextTick 来延迟它。

Vue.directive('focus-on-create', {
// Note: using Vue 1. In Vue 2, el would be a parameter
bind: function() {
Vue.nextTick(() => {
this.el.focus();
})
}
})

new Vue({
el: '#app',
data: {
items: []
},
methods: {
addItem: function() {
this.items.push(Math.random());
}
},
computed: {
sortedItems: function() {
return this.items.sort(function(i1, i2) {
return i1 - i2;
})
}
}
})
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
<div id="app">
<div v-for="item in sortedItems">
<input v-focus-on-create v-model="item">
</div>
<button @click="addItem">
add
</button>
</div>

原回答:让你的输入成为一个组件,这样你就可以给它 a ready hook .

const autofocus = Vue.extend({
template: '<input v-model="item" />',
props: ['item'],
ready: function() {
this.$el.focus();
}
})

new Vue({
el: '#app',
data: {
items: []
},
methods: {
addItem: function() {
this.items.push(Math.random());
}
},
components: {
autofocus
},
computed: {
sortedItems: function() {
return this.items.sort(function(i1, i2) {
return i1 - i2;
})
}
}
})
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
<div id="app">
<div v-for="item in sortedItems">
<autofocus :item="item"></autofocus>
</div>
<button @click="addItem">
add
</button>
</div>

关于vue.js - 新增item的焦点输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39525457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com