ここにPlunkerのプレビューがあります。Angularjsスコープ変数が予想通りに更新されない
Index.htmlと
<body ng-controller="MainCtrl">
Master Checkbox : <input type="checkbox" id="allSelected" ng-click="checkAll('allSelected')" ng-checked="allChecked"> <br> <br>
Slave1 : <input type="checkbox" id="slave1" ng-click="checkAll('slave1')" ng-checked="selectedAll" > <br>
Slave2 : <input type="checkbox" id="slave2" ng-click="checkAll('slave2')" ng-checked="selectedAll" > <br>
Slave3 : <input type="checkbox" id="slave3" ng-click="checkAll('slave3')" ng-checked="selectedAll" > <br>
Slave4 : <input type="checkbox" id="slave4" ng-click="checkAll('slave4')" ng-checked="selectedAll" > <br>
Slave5 : <input type="checkbox" id="slave5" ng-click="checkAll('slave5')" ng-checked="selectedAll" > <br>
app.js
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.checkAll = function(id) {
// First Condition
if (id === "allSelected" && document.getElementById(id).checked) {
// $scope.selectedAll = false;
$scope.allChecked = true;
$scope.selectedAll = true;
}
// Second Condition
if (id === "allSelected" && !document.getElementById(id).checked) {
$scope.allChecked = false;
$scope.selectedAll = false;
}
// Third Condition
if (id !== "allSelected" && !document.getElementById(id).checked) {
$scope.allChecked = false;
}
};
});
は条件1を参照してください。期待通りに動作しません。
問題をよりよく理解するために、ここに画像をアップロードしています。
第1の画像と第二画像との差分をチェックアウト。スレーブチェックボックスのチェックを外した後、マスターチェックボックスのチェックが外されますが、その直後にマスターチェックボックスを再度クリックすると(2番目の画像参照)、特定のスレーブチェックボックスは未チェックです。どうして?
私がここでやっていることは間違っていますか?このコードを期待どおりに動作させるには?
あなたはあなたは$ SCOPE変数でそれを行うことができます.2つの方法でバインディングが問題を解決します。 –
@ngDeveloper私はそれを得ましたが、あなたが手がかりを取ったり、いくつかの例を教えてくださいなぜなら、私は角度がないからです。 – Abhi
ok.in数分 –