私はスーパーヒーロー フレームワークの 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
ので、への参照であると予想していましたが、明らかにそうではありません。それで、ここで何が起こっているのですか?また、これを実装するためのより「角度のある」方法はありますか?checked
users