2017-03-28 17 views
0

javascript/angularJSの新機能ですが、私がしなければならないことは単純かもしれませんが、実際にはわかりません。angularJS:検証で入力が確認されました

<input id="myInput" type="checkbox" ng-checked="isChecked"> 

そして今、私は私のモデルににisChecked値が正しく更新されて実行するためにクリックしてください: は、私はこのようなチェックボックスを持っています。 これは簡単な部分です。 今、oncheckイベントのコントロールを追加する必要があります。言い換えれば: isCheckedが更新される前に、モデルの値を検証する必要があり、検証がfalseを返した場合、値isCheckedを更新しないでください。

答えて

2

あなたがチェックボックスがオンまたはオフされたときに、関数を実行する代わりにng-checkedng-modelng-changeを使用することができます。

<input id="myInput" type="checkbox" ng-model="myModel.isChecked" ng-change="checkboxChanged()"> 

あなたのコントローラでは、あなたが機能してイベントを処理することができますので、こと:

$scope.myModdel = { 
    isChecked = false //setting initial value for checkbox 
}; 
$scope.checkboxChanged = function() { 
    if(some validation error && $scope.myModel.isChecked) { 
    $scope.myModel.isChecked = false; // uncheck checkbox 
    } 
} 

ドキュメントで説明したように、両方のng-modelng-checkedを使用しないでください10

[ng-checked]は、予期しない動作につながる可能性があるため、ngModelと一緒に使用しないでください。

あなたはそうのようなng-classを使用して、あなたのCSSの問題を解決することができます:

<input id="myInput" type="checkbox" ng-model="myModel.isChecked" ng-change="checkboxChanged()" ng-class="{'my-class-name': myModel.isChecked }"> 
+0

私はchecked属性を使用してCSSを持っているので、私は、NG-確認する必要があります。 ng-clickとng-checkedを使用すると考えました: ng-modelとng-checkedの両方のような使い方。 – aeroxr1

+0

ああ、そうです。あるいは、 'isChecked'スコープ変数でウォッチを設定することもできます。 –

+1

ウォッチャにはそれ自体の問題があります。私はまだ最初の答えをお勧めし、あなたのスタイリングの問題を解決するためにcheckedプロパティの代わりに 'ng-class'を使います。 –

関連する問題