如果模型是数组,则设置初始模型值

Set initial model value if model is an array

如果模型是数组的一部分,我该如何设置模型的默认值?

new Vue({
  data() {
    return {
      value: 1,
      values: [],
      products: [{
        name: 'test 1',
      },
      {
        name: 'test 2',
      }]
    }
  },
  created() {
    for (i = 0; i < products.length; i++) {
      this.values.push(1);
    }
  }
}).$mount('#app')
@import url(https://unpkg.com/vue-range-component@1.0.2/dist/vue-range-slider.min.css);

* {
  margin:0;
  padding:0;
  box-sizing:border-box;
}

.app-content {
  padding:40px 15px;
}
<script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script>
<script src="https://unpkg.com/vue-range-component@1.0.2/dist/vue-range-slider.min.js"></script>
<div id="app">
  <div class="app-content">
    <div v-for="(product, index) in products">
      <p>
        {{ product.name }}: {{ values[index] }}
      </p>
      <vue-range-slider v-model="values[index]" min="0" max="10"></vue-range-slider>
    </div>
  </div>
  <div>example of working if not an array:</div>
  <p>
    this works: {{ value }}
  </p>
  <vue-range-slider v-model="value" min="0" max="10"></vue-range-slider>
</div>

正如您从上面的示例中看到的那样,数组滑块在您开始滑动之前不会显示冒号后面的数字,就像您在 data 中设置默认值一样(如单个值)然后它工作正常

所以我的问题是,当模型是一个大小未知的数组时,如何将默认值绑定到模型(产品是从 api 加载的,所以不会总是有 2 个)?

尝试

for (i = 0; i < this.products.length; i++) {
    this.values.push(1);
}