ユーザがhtmlページの値を入力した場合には、それに基づいて制御する必要があるボタンがあります。angular.jsのコントローラからの無効化ボタンを有効にします
モデルをテキストフィールドにバインドして、入力フィールドモデルの値で有効/無効になっている$ scopeで無効な変数を設定しました。ここで
はHTML
<!--This button should be disabled if no value is enterd in both the field-->
<input type='button' value='click' ng-disabled='disabled'>
<br>
<input type="text" ng-model="first">
<br>
<input type="text" ng-model='last'>
であり、ここでcorreponding角度コントローラです。
angular.module('app', []).controller('myController', function($scope) {
$scope.disabled = !$scope.first || !$scope.last;
})
初めて実行されますが、その後の変更に基づいて変更が表示されません。
角度は双方向バインディングを使用していますので、ビュー上で何かを変更している場合はコントローラに反映され、コントローラ上で変更されたものはビューに反映されます。 私はここで何をしていますか?
PS:フォームを使用したくありません
テキスト入力フィールドでonChangeイベントを回避したいと思います。
plunk http://plnkr.co/edit/L5wkcpNzMMBZxtcitJwk?p=preview
感謝。 ng-changeが他の答えで示唆されているように機能することを確信しましたが、私が探す最後の手段になります。 – Pankaj
@Pankaj変更イベントの際に_other_ thingsをする必要があった場合は、Sajeetharanの答えを検討することができます。しかし、単純なケースでは、コントローラに余分なロジックを追加する必要はありません。 –
このアプローチでは、最初と最後ではなくn個のフィールドがあるので、ng-disabledの長い式が追加されます。これを実現するにはクリーンな方法がありますか? また、変更は最後の手段です – Pankaj