2017-08-23 13 views
1

のテンプレートを以下の点を考慮してみましょう:RiotJSは、クラス名とプロパティを使用し

<ul class="clearfix"> 
    <li each={ timeslot, i in events } 
    class={ ??? } 
    data={ timeslot } 
    style="width: { timeslot.len*100 }px;">  
     <div>{ timeslot.start.format() }</div> 
     <div>{ timeslot.title }</div> 
    </li> 
</ul> 

私はクラス名として使用したい値の正確な同じセットを持っている私のtimeslotオブジェクトにstate性質を持っています。したがって、class={ timeslot.state }を使用するのは簡単です。しかし、クラスの評価方法は異なります。 この場合、式を避けてクラス名としてそのまま使用する方法はありますか?

ありがとうございます。 >では

答えて

0

にスクロールさまざまな方法でオブジェクトとして設定する場合、IE:class={foo: true, bar: false }は、各キーの値がtrue-ishかどうかに基づいて追加するクラス名のリストのように扱われます。

しかし、あなたはclass="{ timeslot.classname }"をすれば... - それは代わりに、文字列のように扱われ、出力がclass="whatever"あなたが探している...限りtimeslot.classnameが文字列であるようになります。

+0

私の質問で見てきたように、これは私が試みたのはこれが初めてだった - これは簡単だった。それがうまくいかず、私は暴動のコンパイラエラーが出てきました。あなたはそれを主張したので、私は元の表現を元に戻しました...それは動作します。とにかく...ありがとう。 – ZorgoZ

+0

私は引用符が重要なヒントだと思います。私はRiotが{}式を文字列で扱うのとは違って文字列で扱うと思います。 – JayKuri

+0

右。私は最初これを監督しました。 – ZorgoZ

0

あなたは、あなたがやりたいだろうオブジェクトを作成することができます3.4.0: timeslot.state={SomeClass:true}

http://riotjs.com/guide/#expressionsを参照してください、あなたは{}式を使用する場合、それは評価できるClass object expressions

+0

私はこれを知っており、これは私が望むものではありません。クラス属性値をタイムスロットオブジェクトのプロパティの値にします。私は可能な3つの文字列値を持っているので、そのまま使用したいと思います。式で私はそれぞれをひとつずつチェックする必要があります。 'class = {free:timeslot.state ==" free "、占有:timeslot.state ==" occupied "、closed:timeslot.state ==" closed "}' – ZorgoZ

+0

いいえ、これは異なっています:セクションを確認してください私は参照しました。 – user1278519

+0

私はチェックしました。違いはあまりないようです。それを使用するには2つのステップが必要です: 'timeslot.className = {}; timeslot.className [timeslot.state] = true; ' これは' <... class = {timeslot.className}> '' ...まああまりにもいいです... – ZorgoZ

関連する問題