Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vue Js Adding Dynamic Class name

i am a beginner in Vue JS. I wanted to add class Name i have a simple array using for loop and want to add class name lang-{ARRARY VALUE}

i tried few things seems like it didnt work. i would appreaciate any help from community

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>

    <title></title>

    <!-- BootStrap -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>


    <!-- JQuery-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <!-- development version, includes helpful console warnings -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>


<body>

<div id="app">
    {{ message }}

    <p v-for=" x in languages"  v-on:click="call(x)" :id="'obj-'x" style="border:1px solid black; padding: 10px;">
        {{x}}
    </p>

</div>


<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: 'Hello Vue!',
            languages:["Python", "c++"]
        },
        methods:{
            call:function (x) {
                alert("Hello "+ x);
            }
        }
    })
</script>
</body>
</html>
like image 970
Soumil Nitin Shah Avatar asked Jul 17 '26 02:07

Soumil Nitin Shah


2 Answers

:id="'obj-'x"

needs to be this to work

:id="'obj-' + x"

same works with classes

:class="'lang-' + x"

but i prefer template strings if possible

:class="`lang-${x}`"
like image 104
Nicensin Avatar answered Jul 18 '26 17:07

Nicensin


This is how you do it

<p v-for="(x, index) in languages" :class="'lang-'+x" :key="index"  v-on:click="call(x)" style="border:1px solid black; padding: 10px;">{{x}}</p>
like image 38
Amaarrockz Avatar answered Jul 18 '26 16:07

Amaarrockz



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!