最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Vuejs: how do you pass class(classes) to template? - Stack Overflow

programmeradmin2浏览0评论

What is the right syntax to pass class to %item.class% in the following code? Any syntax like [item.class] or {{ item.class }} passes it as string without render. How to pass it properly?

How to pass several classes and apply to several tags (a, span etc.) nested in one template? Pass an array? How to iterate it?

<ponent v-for="item in List" 
                :item="item"
                :class="item.class"
</ponent>


let ponent = Vueponent('ponent', {
       props: ['item'],
       template: `<li class=" %item.class% ">
                     <a class="fa %item.class% "></a>
                     <span class="fa %item.class%"></span>
                  </li>`
       }),
       data: function (){
        return {
            List: [
                {key:0, class:'someClass'},

            ]
        }
    },
 })

Thanks beforehands :)

What is the right syntax to pass class to %item.class% in the following code? Any syntax like [item.class] or {{ item.class }} passes it as string without render. How to pass it properly?

How to pass several classes and apply to several tags (a, span etc.) nested in one template? Pass an array? How to iterate it?

<ponent v-for="item in List" 
                :item="item"
                :class="item.class"
</ponent>


let ponent = Vue.ponent('ponent', {
       props: ['item'],
       template: `<li class=" %item.class% ">
                     <a class="fa %item.class% "></a>
                     <span class="fa %item.class%"></span>
                  </li>`
       }),
       data: function (){
        return {
            List: [
                {key:0, class:'someClass'},

            ]
        }
    },
 })

Thanks beforehands :)

Share Improve this question edited Apr 1, 2020 at 11:07 Boussadjra Brahim 1 asked Mar 31, 2020 at 19:29 Ivan KolyhalovIvan Kolyhalov 1,00212 silver badges20 bronze badges 0
Add a ment  | 

3 Answers 3

Reset to default 4
<li :class="item.class">
<a class="fa" :class="item.class">

Solution: You can pass an object to v-bind:class :class to dynamically toggle classes:

<li :class="item.class">
                     <a class="fa" :class="item.class"></a>
                     <span class="fa" :class="item.class"></span>
                  </li>

Binding HTML Classes

  • Object Syntax :
<div v-bind:class="{ active: isActive }"></div>
data: {
  isActive: true
}
  • Array Syntax:
<div v-bind:class="[activeClass, errorClass]"></div>
data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}

More Info Official documentation

You could separate the bound classes from the no-bound ones :

 template: `<li :class="item.class">
                     <a class="fa" :class="item.class"></a>
                     <span class="fa" :class="item.class"></span>
                  </li>`
发布评论

评论列表(0)

  1. 暂无评论