ng-repeat
で生成されているテーブルにチェックボックスがあります。javascriptでチェックされたプロパティがtrueに設定されていると、チェックボックスがチェックインされていない
<input type="checkbox" id="chkView{{::myObj.TeamId}}"
ng-disabled="disableView(myObj)"
ng-click="setViewSelection(myObj.TeamId, this.checked)">
チェックボックスが何ng-model
属性を持っていないし、これは意図的なものだった:
チェックボックスは、次のように定義されています。私は、各チェックボックスのステータスをchecked
のjavascriptで直接制御したいと思っていました。
何らかの理由で、チェックボックスが応答しないため、checked
のプロパティがjavascriptで更新されています。私はJavaScriptでこの文を持っているのであれば:
document.getElementById('chkView27').checked = true;`
それはプログラムで動作します、私は
console.log(document.getElementById('chkView27').checked);
を行うことができますし、それはコンソールにtrue
を印刷します。しかし、ブラウザのUIには反映されていません。ブラウザでは、チェックボックスはオフのままです。私は事実の後にチェックボックスのchecked
プロパティに何も影響していないことを確認しました。 UIは更新されません。どうしてこれなの?
EDIT:プラサドの提案を1として、私はこのような$scope.$apply
でステートメントをラップ試してみました:
$scope.$apply(function() {
document.getElementById('chkView27').checked = 'checked';
});
しかし、これは単に「アクションすでに進行中」エラーをスローする角度の原因となります。 ?
https://docs.angularjs.org/error/ $ rootScope/INPROG P0 = $ダイジェスト
ここで 'ng-model'を使うべきです。 –
@PankajParkarここではリファクタリングなしでng-modelを使うことはできませんので、バニラのjavascriptを使って解決策を見つけたいと思います。 – Legion
'ng-click'の代わりに' ng-change'を試してみてください。正しい値を提供します –