私はスーパーヒーロー フレームワークの AngularJS にまったく慣れていません。そのため、管理者が選択チェックボックスで満たされたテーブルを介して Web サイト内の他のユーザーのアクセス許可を変更できるようにする単純な SPA を開発しようとしていたときに、問題が発生しました。定義$scope.checkedしたのは、管理者が選択したユーザーの数$scope.mainCheckBoxと、3 つの状況のそれぞれで主要なチェックボックス (Gmail のものなど) の正しい CSS クラスを保持するユーザーを把握できるようにするためです: すべてのユーザー選択されている、ユーザーが選択されていない、および部分的に選択されています。この単純なロジックは次のようになります。
$scope.updateMainCheckBox = function(){
if(this.checked==this.users.length) this.mainCheckBox = "qm-icon-checked";
else if(!this.checked) this.mainCheckBox = "";
else this.mainCheckBox = "qm-icon-minus";
};
他のチェックボックスの ng-click イベント コールバックの最後でこれを実行すると、このコードはクラスを正しく選択できましたが、クラスをmainCheckBox. すべてを変更this.mainCheckBoxする$scope.mainCheckBoxと、すべてがうまくいき、ページは期待どおりに動作します。
したがって、バニラ Jsthisはオブジェクトへの参照であることはわかっていwindowますが、AngularJS には独自のイベント処理ループがあるため、現在はそうではないと思います。とが見つかった$scopeので、への参照であると予想していましたが、明らかにそうではありません。それで、ここで何が起こっているのですか?また、これを実装するためのより「角度のある」方法はありますか?checkedusers