Vue Js v-bind: синтаксис класса не работает?

Я новичок в VueJs, и у меня возникла эта небольшая проблема, сначала вот мой пример HTML-кода:

<div class="search">

        <input :class="{ longwidth : isActive }" v-show="showInput" type="text">
        <img @click="hideImgShowInput" v-show="hideImg" src="Assets/images/search-icon.png">

</div>

Я точно следовал документации, и я использую PHPStorm в качестве редактора, но моя функция, которая изменяет переменную 'isActive', не работает, у меня появляется эта ошибка:

Attribute :class is not allowed here

Любая помощь приветствуется.

1 ответ

Это звучит как предупреждение PHPStorm. Игнорируйте его или попробуйте редактор с поддержкой Vue, такой как vs code или atom. Ваш код выглядит хорошо для меня.

Эта ошибка приводит к тому, что компонент не отображается

Мой случай похож на следующий

<script type="text/x-template" id="game-row">
    <tr>
        <td>{{ title }}</td>
        ...
    </tr>
</script>

Таким образом, при добавлении атрибута class к элементу tr указанное сообщение

<script type="text/x-template" id="game-row">
    <tr :class="{ active: isActive }">
        <td>{{ title }}</td>
        ...
    </tr>
</script>

Чтобы исправить это, необходимо передать атрибут класса в вызове пользовательского компонента, как показано ниже.

<script type="text/x-template" id="game">
    <div>
        <p v-if="isLoading">Loading...</p>
        <template v-else>
            <table>
                <caption>Game {{ title }}</caption>
                <thead>
                    <tr>
                        <th>Name</th>
                    </tr>
                </thead>
                <tbody>
                    <tr
                        is="game-day-row"
                        v-for="game of games"
                        :class="{ 'active': isActive }" <!-- Here I set the class -->
                        :key="game.id"
                        :game="game"
                    ></tr>
                </tbody>
            </table>
        </template>
    </div>
</script>

Вы можете прочитать об этом в руководстве по классам и стилям vue.

https://vuejs.org/v2/guide/class-and-style.html

В выводе html класс active добавляется к элементу tr

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