Вы только что столкнулись с одним из самых распространенных ошибок Вуэйса: реактивность (и, следовательно, недостаток)!
Проблема здесь в том, что при создании свойства модели это просто пустой массив / объект, и любое свойство, которое вы добавляете к этому элементу, не будет реактивным: это означает, что любые изменения, сделанные программно, не вызовут Vue. из-за внутренних проблем единственная причина, по которой v-модель все еще работает, заключается в том, что изменения, сделанные пользователем, а не кодом, фактически вызывают собственные события HTML.
У вас есть два возможных решения:
Игнорировать реактивную часть (но вы не сможете программно обновить выбранное значение или, по крайней мере, оно не будет видно) и просто убедитесь, что опция «Выбрать» будет выбрана по умолчанию присвоив ему правильное значение (таким образом, вы можете просто пропустить все инициализации цикла по умолчанию).
<option :value="undefined" selected="selected" disabled>Select</option>
Следуйте официальному способу, предложенному в документации Vuejs, чтобы добавить новое свойство к объекту, сохраняя при этом преимущество реактивности
this.$set(this.model, $i, "");
Вы можете проверить этот поршень, в котором я показываю вам оба способа достижения вашей цели:
https://jsfiddle.net/8y7eu39z/18/
Кроме того, знаете ли вы, что для опций местозаполнителя в выборе можно добавить атрибут отключен?
Реактивность Ссылка: https://vuejs.org/v2/guide/reactivity.html
Также: если вы хотите, чтобы значение «null» было значением по умолчанию, но вам не удалось найти способ сделать его распознаваемым с помощью опций «select», просто используйте :value="null"
вместо value="null"
, и тогда вам следует в состоянии использовать
this.$set(this.model, $i, null);