2016-03-22 5 views
-1

入力がタッチされて空であるかどうかを確認しようとしています(組み込みの関数はありません)。anglejs式で真の&& falseをtrueにする方法は?

<form-input is-invalid-on="isTouched && !gs.data.name || gs.data.name.length > 50"></form-input> 

isTouched && !gs.data.nametrue && falseと評価された場合、その後発現の側は、だから私の質問は、入力がタッチされた場合、それはだ場合、私は全体の式がtrueと評価作るのですか、非常に簡単ですfalse

なり空であるか、または50より大きい長さを有するか?

+0

「true && true」はjavascriptで正しくありませんか?あなたはそれをどこで読んだのですか? –

+0

'true&= true'は' true'ではないので、 'true && true'は' false'になるのはなぜですか?また、Javascriptで 'true == true'を' true'にしないのはなぜですか? –

+0

'isTouched &&!gs.data.name.length'を意味しますか? – kazupooot

答えて

0

は、私は最終的にそれはとても奇妙な行動をされた理由についての理由を発見し、そしてこの質問は多くの答えを持っているように私はそれを削除できませんでした:それが動作するかどう

0
<form-input is-invalid-on="(isTouched && !gs.data.name) || (gs.data.name.length > 50)"</form-input> 
+0

とは何ですか?これは間違っています。 – Chrillewoodz

+0

属性ディレクティブとして使用されました。あなたは引用符を削除することはできません – kazupooot

+0

あなたはこれを試しましたか? (isTouched &&!gs.data.name)|| (gs.data.name.length> 50) –

0

()を使用して試してみても、私はそれが属性ディレクティブとして使用されていると信じてgs.data

isTouched && (!gs.data || !gs.data.name || !gs.data.name.length || gs.data.name.length > 50)よう
<form-input is-invalid-on="isTouched && (!gs.data || !gs.data.name || !gs.data.name.length || gs.data.name.length > 50)"></form-input> 
+0

これは変数ではなくHTML属性です。それをもっと明確にするために編集しました。 – Chrillewoodz

+0

括弧を使用すると、私は恐れるのと同じ結果が得られます。 – Chrillewoodz

+0

括弧を使用しても違いはありません。読みやすくするだけです。そして、ORの前に常に計算されます。 –

0

を確認することができます。

is-invalid-on="(isTouched && gs.data.name.length) || gs.data.name.length > 50"

理由?私はあなたのgs.data.nameが文字列だと仮定しました。 javascriptで評価すると空の文字列はまだ真実の値です。だからあなたは長さにそれを評価する必要があります。

<form-input is-invalid-on="isTouched && gs.data.name.length==0 || gs.data.name.length > 50"></form-input> 

はあなたが適切に空の文字列にgs.data.nameを初期化すると仮定:

+0

入力が空であるかどうかをチェックする必要があります。カッコを追加しても何も起こりません。 – Chrillewoodz

0

角度表現は、私はこれを試してみてください得たものからjavascriptをより正確に同じように動作しません。

ところで、あなたのタグに>を忘れました。

<form-input is-invalid-on="!!isTouched && gs.data.name.length === 0 || gs.data.name.length > 50" > </form-input> 
0

を参照してください。だから私は何が起こったのかを説明するかもしれない。

は、それは私がいつもfalseであるisInvalidOnその結果、表現undefined && falseを作った(それはディレクティブの属性で使用された場合でも)ディレクティブの外にそれを使用していたので、isTouchedは常にundefinedだったことが判明しました。

代わりにの実際のform-inputテンプレートにng-class={invalid: isInvalidOn && isTouched}という名前を付けて、目的の動作が行われるようにしました。

+0

それは私が欲しいのと正反対の振る舞いをしているので、どうすればそれを笑い回すことができますか? – Chrillewoodz

+0

(isTouched = true && gs.data.nameが空の文字列の場合)OR gs.data.name.length> 50の場合、式は真と評価されます。私はこれがあなたの質問で尋ねたものだと思います – Anant

関連する問題