Значение после выброса не меняется

#javascript #typescript #vuejs3

Вопрос:

У меня есть родительский и дочерний компоненты. В моем родительском компоненте я запущу наблюдаемый метод в моем дочернем элементе. Там у меня есть эмиссия, которая возвращает меня к следующему отдельному методу в родительском компоненте.

 export default {
    setup() {
       var allItemsChecked= ref(false)

      return {
         allItemsChecked 
      }
    },
   
   methods:{
    showButton(checked) {
       this.allItemsChecked = checked //checked has the value "true" 
       console.log(this.allItemsChecked)
     },
   }
}

       

 

Этот метод должен отображать следующую кнопку:

  <div v-if="allItemsChecked">
       <div class="d-flex flex-justify-center pt-5">
            <button class="button large dark outline"><span class="mif-truck"> save</span></button>
       </div>
 </div>
 

Консоль.в журнале отображается правильное значение «true», но значение в DOM не меняется.

Я присвоил ссылку переменной allItemsChecked. Возможно ли, что вы не можете излучать родительскому объекту в наблюдаемом методе ?

Я благодарен за любую помощь или подсказки.

Комментарии:

1. @серьезно, что вы подразумеваете под командой отображения? Я просто назначаю allItemsChecked с помощью true. Затем из-за ссылки значение в dom также должно измениться на true, что приведет к отображению кнопки. Я попытался добавить оператор if, который является истинным, но для dom значение равно false

Ответ №1:

Если allItemsChecked это a ref , вам нужно использовать .value для установки значения реактивным способом

  showButton(checked) {
       this.allItemsChecked.value = checked //checked has the value "true" 
       console.log(this.allItemsChecked)
 },
 

если вы получаете ошибку Cannot create property 'value' on boolean 'false' , это означает, что вы уже неправильно назначили ее где-то в другом месте. Найдите все экземпляры allItemsChecked = и замените на allItemsChecked.value =

Комментарии:

1. Я отредактировал свой вопрос, чтобы, надеюсь, сделать его более ясным. Я сожалею, если мой вопрос каким-либо образом ввел вас в заблуждение. Я получаю ошибку ( не удается создать свойство «значение» для логического значения «ложь»), если я использую .value на allItemsChecked

2. посмотрите на другие случаи, когда присваивается значение

3. Значение allItemsChecked присваивается только в showButton Методе