Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js VueJS//如何从外部方法更改v-for循环中的输入值?_Vue.js - Fatal编程技术网

Vue.js VueJS//如何从外部方法更改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

我的组件中有一个v-for循环,我需要在从服务器获得输入值后更新它。下面我提供了组件的完整代码和我当前的问题-我不知道如何更改,甚至不知道如何引用任何输入。我用大写字母在行中标记了不起作用的代码,并在代码片段之后提供了更多详细信息

<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">&nbsp;{{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));
确保在记录对象时显示对象上的键,而不是单击对象时。