Почему параметры v-bind не могут ссылаться на переменную в объекте?

В приведенном ниже коде работает только #3. Почему я не могу передать переменную showAlert1 из alertObj?

Кроме того, как работает #3? извлекает ли он первую логическую переменную из объекта?

PS. Я не уверен, почему StackOverflow не показывает Vue в качестве опции при выполнении кода (или как правильно его импортировать)

var app = new Vue({
  el: '#app',
  data: {
    alertObj: [{
      showAlert1: true
    }]
  }
})
.alert {
  background-color: yellow;
}
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>



<div id = "app">
  <div v-bind:class = "{alert:alertObj.showAlert1}">#1</div>
  <div v-bind:class = "{alert:showAlert1}">#2</div>
  <div v-bind:class = "{alert:alertObj}">#3</div>
</div>
alertObj - это массив, вам сначала нужен индекс. alertObj[0].showAlert1
Psidom 25.11.2018 04:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
362
1

Ответы 1

Во-первых, когда вы связываете класс с переменной, которая находится рядом с двоеточием, она оценивается как логическое значение.

alert:alertObj.showAlert1, в вашем примере alertObj.showAlert1 будет оцениваться как Boolean(alertObj.showAlert1).

Так,

  1. alertObj.showAlert1 вернет undefined. alertObj не имеет ключа showAlert1
  2. alert: showAlert1 вернет undefined, потому что у вас нет свойства showAlert1
  3. alertObj вернет true, поэтому класс применяется

Почему сам по себе alertObj возвращает true? И у alertObj ДЕЙСТВИТЕЛЬНО есть ключ внутри него с именем "showAlert1", я не совсем понимаю, что означает "ключ" ...

John Mc 25.11.2018 04:51

потому что у него есть массив. Только такие значения, как undefined, null, false, "" будут оценены как false.

Raja Sekar 25.11.2018 05:05

Другие вопросы по теме