Кнопка переключения Nativescript Vue с v-bind

Я новичок в nativescript vue, и у меня есть вопрос о простом «переключателе», который я хочу сделать. Когда я нажимаю кнопку, она должна изменить цвет фона. Я пытался сделать это с помощью v-bind. Я знаю, что это не самый красивый код ... ;-)

<template>
  <Page class = "page">
    <ActionBar title = "Einstellungen">
    </ActionBar>
    <StackLayout orientation = "vertical" class = "page-content">

      <StackLayout orientation = "horizontal" class = "nix">
      
        <StackLayout :class = "{ active: isMaleActive }" ref='layoutMale' class = "btn-img" orientation = "vertical" padding = "10" @tap = "onTappedGender('male')" >
            <Image src = "~/assets/images/male.png" />
            <Label text = "Männlich" verticalAlignment = "center"></Label>
        </StackLayout>

        <StackLayout :class = "{ active: isFemaleActive }" ref='layoutFemale' class = "btn-img" orientation = "vertical" padding = "10" @tap = "onTappedGender('female')" >
            <Image src = "~/assets/images/female.png" />
            <Label text = "Männlich" verticalAlignment = "center"></Label>
        </StackLayout>
      </StackLayout>

    </StackLayout>
  </Page>
</template>

<script>
    export default {
        data: {
            isMaleActive: false,
            isFemaleActive: false,
        },
        name: 'settings-view',
        methods: {
            onTappedGender(gender){
                //console.info(gender);
                if (gender == "male") {
                    this.isMaleActive = true;
                    this.isFemaleActive = false;
                } else {
                    this.isMaleActive = false;
                    this.isFemaleActive = true;
                }
                console.info(this.isMaleActive);
            }
        },
    }
</script>

<style scoped>
    ActionBar {
        background-color: #53ba82;
        color: #ffffff;
    }
    .btn-img{
        border-radius: 5;
        border-width: 1;
        color: white;
        margin: 10;
        font-size: 22;
        border-color: #2b3c6a;
        height: 80;
        width: 80;
    }

    .active{
        background-color: blue;
    }
</style>

Итак, что не так с кодом? Большое Вам спасибо.

Поведение ключевого слова "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) для оценки ваших знаний,...
0
0
1 152
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы не можете написать это, потому что вы привязываете атрибут класса и устанавливаете его как статический. <StackLayout :class = "{ active: isMaleActive }" ... class = "btn-img" >

Что вам нужно сделать: <StackLayout :class = "[{ active: isMaleActive }, 'btn-img']" >

спасибо за подсказку, но цвет фона все еще не изменился.

Thandor 19.11.2018 10:02

На самом деле, вы можете иметь вместе атрибут класса и v-bind для класса. Проблема заключалась в функции данных.

Manoj 19.11.2018 10:05

Не знал, мой эслинт всегда на это жалуется. Но на самом деле данные не были функцией ...

Duhoux Pierre-Louis 19.11.2018 10:17
Ответ принят как подходящий

В компоненте Vue data должен быть функцией, возвращающей объект.

Образец детской площадки

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