動的クラス名を生成する方法は?
li v-for='obj in objs'
| {{ obj.id }} {{ obj.title }}
div id="obj-{{ obj.id }} " style="float:right; color:red;"
このサンプルは機能しません! divを後で更新するには、このクラス名が必要です!!!
これは私を助けました。
div :class="['obj-' + obj.id]" style="float:right; color:red;"
私はslim-lang
に精通していませんが、これはVueテンプレート内で取得する必要があるものです:
<div v-bind:class="['static-class', { 'active-class' : isActive }]">...</div>
上記の場合、isActive
がtrue
と評価されると、 'active-class'が適用されます。また、「静的クラス」は常にビューに適用されます。これは配列構文と呼ばれます。
参照: https://vuejs.org/guide/class-and-style.html#Array-Syntax
slim-lang
プロセッサが上記のhtmlを発行することを確認する必要があります。
id
の設定に移ると、口ひげ({{...}}
)構文を使用して属性バインディングを行うことはできません。次のようにid
をバインドする必要があります。
<div v-bind:id="dynamicId"></div>
複数のクラスの場合:
:class="{'form-control':true,['box_'+index]:true}"
あなたのコードは実際に動作します。問題は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'},
]
}
});