Vue.js VueJS//如何从外部方法更改v-for循环中的输入值?
我的组件中有一个v-for循环,我需要在从服务器获得输入值后更新它。下面我提供了组件的完整代码和我当前的问题-我不知道如何更改,甚至不知道如何引用任何输入。我用大写字母在行中标记了不起作用的代码,并在代码片段之后提供了更多详细信息Vue.js VueJS//如何从外部方法更改v-for循环中的输入值?,vue.js,Vue.js,我的组件中有一个v-for循环,我需要在从服务器获得输入值后更新它。下面我提供了组件的完整代码和我当前的问题-我不知道如何更改,甚至不知道如何引用任何输入。我用大写字母在行中标记了不起作用的代码,并在代码片段之后提供了更多详细信息 <template> <div class="allPlaces__entrance" v-for="(entrance, index) in places.entrance" v-bind:key="index"> <div cla
<template>
<div class="allPlaces__entrance" v-for="(entrance, index) in places.entrance" v-bind:key="index">
<div class="allPlaces__infoBlock">
<div>
<div class="allPlaces__available">
<span class="allPlaces__label allPlaces__label--places">Доступно мест:</span>
<span class="allPlaces__data"> {{entrance.vacant_places}}
</span>
</div>
<div class="allPlaces__title allPlaces__title--entrance">{{getEntranceName(entrance)}}</div>
</div>
<div class="allPlaces__price">
<span class="allPlaces__label">Цена: </span>
<span class="allPlaces__data">{{entrance.price}}</span>
</div>
</div>
<div class="allPlaces__orderBlock">
<div class="allPlaces__inputBlock">
<input class="allPlaces__input" type="number" name="amount" v-model="entrance.value" :ref="entrance.id" @blur="showLabel($event, index)">
<label class="allPlaces__label allPlaces__label--input"
@click="hideLabel($event, index)">Количество мест
</label>
</div>
</div>
</div>
</div>
</template>
script>
import vueMethods from '../../mixins/methods'
import { mapState } from 'vuex'
export default {
name: 'allPlaces',
mixins: [vueMethods],
data () {
return {
showTitle: ''
}
},
mounted () {
this.$nextTick(function () {
window.addEventListener('resize', this.updateAllPlacesOnResize)
this.setupAllPlaces()
})
},
watch: {
sessionId: function () {
console.log('this.sessionId ', this.sessionId);
// Как только создан seesionId запрашиваем колличество мест в корзине
this.getPlacesInCart();
let ref = this.$refs; // HERE IS MY ISSUE
console.log(this.$refs[15129]); // UNDEFINED
},
places: function () {
console.log(this.places.entrance[0].id);
}
},
computed: {
...mapState({
db: state => state.onload.eventData.currentDb,
agentId: state => state.onload.eventData.currentAgent,
eventId: state => state.onload.eventData.currentEvent,
modals: state => state.modals,
metric: state => state.onload.eventData.metric,
section: state => state.onload.eventData.section,
show: state => state.onload.eventData.show,
event: state => state.onload.eventData.event,
building: state => state.onload.eventData.building,
hall: state => state.onload.eventData.hall,
places: state => state.onload.eventData.places,
placesSeated: state => state.onload.eventData.places.place,
sessionId: state => state.cart.sessionId,
ticketsInCart: state => state.cart.ticketsInCart
})
}
}
</script>
但是如果我调用console.log(this.$refs[15129])代码>,我得到了未定义的
请告知可能发生的情况是,sessionId
的观察器在位置有任何内容之前执行。入口
。这意味着不呈现带有:ref
的元素,因此This.$refs
为空。您可以通过添加以下内容对此进行验证:
console.log(Object.keys(this.$refs));
在执行监视程序代码时查看当前引用
请注意以下部分:
关于ref注册计时的一个重要注意事项:由于ref本身是通过渲染功能创建的,因此在初始渲染时无法访问它们-它们还不存在$refs也是非反应性的,因此不应尝试在模板中使用它进行数据绑定
可能发生的情况是,sessionId
的观察器在位置有任何内容之前执行。入口
。这意味着不呈现带有:ref
的元素,因此This.$refs
为空。您可以通过添加以下内容对此进行验证:
console.log(Object.keys(this.$refs));
在执行监视程序代码时查看当前引用
请注意以下部分:
关于ref注册计时的一个重要注意事项:由于ref本身是通过渲染功能创建的,因此在初始渲染时无法访问它们-它们还不存在$refs也是非反应性的,因此不应尝试在模板中使用它进行数据绑定
有可能它还没有呈现出来,试试console.log(JSON.parse(JSON.stringify(this.$refs)))来检查它是否真的存在places.entry['15129'].value=newValue
应该可以,不是吗?@ChrisLi有空对象。如果console.log(this.$refs),则无法理解为什么会这样代码>显示我在任务结束时提供的对象post@whereo你的想法可能会成为我明天尝试的另一种方法的基础。有了这些,我想尽快解决当前的问题,因为这会让我的生活方式变得更简单)console.log不能像你认为的那样工作。你可以在这里读到它,它可能还没有呈现出来,试试console.log(JSON.parse(JSON.stringify(this.$refs)))来检查它是否真的存在places.entry['15129'].value=newValue
应该可以,不是吗?@ChrisLi得到了空对象。如果console.log(this.$refs),则无法理解为什么会这样代码>显示我在任务结束时提供的对象post@whereo你的想法可能会成为我明天尝试的另一种方法的基础。有了这些,我想尽快解决当前的问题,因为这会让我的生活方式变得更简单)console.log不能像你认为的那样工作。你可以在这里读到,这里没有空的对象,而是我在文章末尾提供的对象。但奇怪的是,我尝试了console.log(Object.keys(this.$refs))
得到了空数组((这一点也不奇怪。这个。$refs
只是“展开”的,因此当您在控制台中单击它时,它的内容被“查找”。此时,所有的引用都已创建。控制台.log(Object.keys(这个。$refs))
确保在记录对象时,而不是单击对象时,显示对象上存在的键。问题是没有空对象,而是我在文章末尾提供的那些。但是奇怪的是,我尝试了控制台.log(object.keys(this.$refs));
并得到了空数组((这一点也不奇怪。this.$refs
只是“展开”的,因此当您在控制台中单击它时,它的内容会被“查找”。此时,所有的ref都已创建。console.log(Object.keys(this.$refs));
确保在记录对象时显示对象上的键,而不是单击对象时。