2017-02-09 10 views
1

私の角度アプリには単純なコントローラとテンプレートがあります。テンプレートには3つのテキスト入力があります。私は、3つの値のすべてに基づいて(または設定されていない)表示/非表示にしたい。今、私がこれまで経験したもの:私は、角度:ng-if/ng-showのコントローラ機能が値の変更時に再度評価されません

ng-if="myCtrl.checkValues()" 

のようなものと、コントローラ内の関数を値を確認するためにコントローラ機能を使用する場合は

vm.checkValues = checkValues; 

function checkValues() { 
    return vm.inputVal1 !== '' && vm.inputVal2 !== '' && vm.inputVal3 !== ''; 
} 

その後、私は同じように定義されています入力フィールドに何かを入力することで、値の1つ以上を更新するたびに評価されることを期待してください。しかし、それは動作しません。値をチェックする関数を使用せず、ng-ifの中で関数のコード行を直接使用する場合にのみ機能します。チェックされる値が変更されるたびに関数が更新されていないようですが、その場合ですか?または私は何かを逃していますか?

+0

あなたはあなたの第二の欠落している '&&'にあなたのチェック... 'vm.inputVal2!== 'vm.inputVal3!==' ';'は何をしているのかわかりません... – tymeJV

+0

申し訳ありません、それはちょうどタイプミスで、私のコードの実際のエラーではありません。 ;-) – Vortilion

+0

私はその値でウォッチャーを使用し、それに基づいて検証を実行することをお勧めします – ocespedes

答えて

2

戻るこの表現してみてください。ここでは

$scope.checkValues = function() { 
    return ($scope.input1 && $scope.input2 && $scope.input3); 
    } 

のだため作業plunkerあなた

+0

それは基本的には同じコードですが、好きなControllerAs構文はありません。 Ooしかし、ありがとう! I – Vortilion

0

私はあなたが正しく欲しいものを得る場合は、表示したい/ 3の入力に基づいて、いくつかの要素を非表示にしたときにhidebox/show要素を更新するテキストボックスの変更。

あなたはNG-変化とngのショーを使用して、ここでは、例ですテストしていませんが、私はそれを助け、あなたのアイデアを与える願っていることを行うことができます。

<input type="text" ng-model="text1" ng-change="checkValues()/> 
<input type="text" ng-model="text2" ng-change="checkValues()/> 
<input type="text" ng-model="text3" ng-change="checkValues()"/> 

<label ng-show="checkValues()">Test</label> 

$scope.checkValues = function() { 
    return $scope.text1 !== '' && $scope.text2 !== '' && $scope.text3 !== ''; 
} 
+0

実際には大洪水では変化は必要ありません。奇妙なことに、私の生産的なコードでは、ここでのように動作しません。 – Vortilion

+0

プロダクションコードの@Vortilionは 'ctrl.checkValues'ではなく' scope.checkValues'です – vittore

+0

はい、そうですか?私が書いたように、ControllerAs-Syntaxを使用しているのは正しいです。 – Vortilion

関連する問題