2016-10-31 7 views
4

Как создать динамическое имя класса?Динамическое имя класса

li v-for='obj in objs' 
    | {{ obj.id }} {{ obj.title }} 
    div id="obj-{{ obj.id }} " style="float:right; color:red;" 

Этот образец не работает! Мне нужно это имя класса, чтобы обновить div позже !!!

ответ

13

Это помогло мне.

div :class="['obj-' + obj.id]" style="float:right; color:red;" 
10

Я не знаком с slim-lang, но это то, что вам нужно, чтобы попасть внутрь шаблона Вю:

<div v-bind:class="['static-class', { 'active-class' : isActive }]">...</div> 

В приведенном выше случае, если isActive вычисляется в true, затем «активный-класс» будут применены. И «static-class» всегда применяется в представлении. Это называется синтаксисом массива.

Ref: https://vuejs.org/guide/class-and-style.html#Array-Syntax

Вы должны убедиться, что slim-lang процессор излучает выше HTML.

Теперь, придя к настройке id, вы не можете использовать привязки атрибутов с использованием синтаксиса усов ({{...}}). Вы должны связать свой id следующим образом:

<div v-bind:id="dynamicId"></div> 

Ссылка: https://vuejs.org/guide/syntax.html#Attributes

+0

Я не уверен, я понимаю ваши примеры, я не нужно использовать условные классы, мне нужно статические. – NeverBe

1

Ваш код действительно работает, я думаю, проблема в настройке данных vue. Я тоже люблю тонкий.

div#posting 
    li v-for='obj in objs' 
    | {{ obj.id }} {{ obj.title }} 
    div id="obj-{{ obj.id }}" class="obj-{{ obj.id }} " style="float:right; color:red;" 

javascript: 
    var posting; 
    posting = new Vue({ 
    el: '#posting', 
    data: { 
     objs: 
     [ 
      {id: 1, title: 'xx'}, 
      {id: 2, title: 'yy'}, 
     ] 
    } 
    }); 

web image show

Смежные вопросы