<input type="checkbox" value="" ng-model="filterPrivateDocCheckBox" ng-click="dl.filterPrivateDocument(filterPrivateDocCheckBox, $event)">
<input st-search="target" class="input-sm form-control" ng-model="dl.documentTarget" ng-change="dl.change()" />
function filterPrivateDocument(val)
{
if(val)
this.documentTarget = 'Private';
}
チェックボックスをクリックすると、値をテキストボックスに設定しましたが、ng-change
イベントが発生しないことがわかりました。どうして?
また、テキストボックスに値を入力すると、ng-change
イベントが発生することがわかります。
この問題の修正はありますか?
ドキュメント によると:
NgChange式は、入力値の変更によって新しい値がモデルにコミットされた場合にのみ評価されます。
評価されません:
- $ parsers変換パイプラインから返された値が変更されていない場合
- モデルがnullのままであるため、入力が引き続き無効である場合
- モデルが入力値の変更ではなくプログラムで変更された場合
そのため、JavaScript(/ angular)によって変更されてもトリガーされません。
あなたができることは、自分で変更機能をトリガーすることです。
function filterPrivateDocument(val) {
if(val) {
this.documentTarget = 'Private';
this.change();
}
}
this jsfiddle を参照してください