2017-06-04 10 views
2

この表現はVuejsで何を意味していますか?Javascriptにバイナリの真理値演算子がありますか?

真実の表現であるようですが、Javascriptには2進の真理値演算子がありますか?

+0

https://vuejs.org/v2/guide/class-and-style.html#Object-Syntaxは、クラスオブジェクトはクラスにバインドされることを述べているので、何かを持っている何の停止はありませんこのように、classObject:{ active:true、 'text-danger':false、model: "500" }真偽値ではない可能性のあるモデル名に注目してください。これを行うきれいな方法については不明です。 – Bootstrap4

+1

あなたは正しいです。間違いを犯して真実の価値をもたらし、あなたが本当に望んでいないクラスに終わる場合があります。しかし、オブジェクトが有効かどうかを確認する関数からオブジェクトを返すことができます。 in、 ':class =" makeClassObject "'ここで 'makeClassObject'はプロパティがクラスで値がブール値のオブジェクトを返す関数です。その関数ではブール値も検証できます。 – Bert

+1

また、[厳密な等価演算子](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness)を使って真の値を持つようにすることもできます: ':class =" {expr1 :true === expr2} "'。 – Bert

答えて

4

これは、Vueのクラスバインディングのためのobject syntaxです。 expr2truthyの場合、Vueはクラスにexpr1というクラスを追加します。

:classは、v-bind:classshorthandです。

発現がdivにあった場合expr2がtruthyた場合、例えば、

<div :class="{expr1: expr2}"></div> 

そして、レンダリングされた出力は

<div class="expr1"></div> 

あろう編集

Truthy値しばしば混乱とJavaScriptのエラーの原因となります。しかし、trueの値があることを確認するために使用できるstrict equality operatorがあります。あなたはexpr2truthyなくtrueかもしれないケースを避けることができます

:class="{expr1: true === expr2}" 

Example

関連する問題