ng-modelにng-checkをバインドする際に問題があります。つまり、ng-modelは自分のチェックボックスの選択状態を認識しません。ng-modelをng-checkedボックスにバインドする方法
ここには説明があります(コードベースははるかに大きくなりますが、コードを最小限に抑えるように調整してあります)。 JavaScriptでページロードで
私は自分の製品を初期化し、デフォルト値を設定します。
$scope.products = {}
$scope.SetProductsData = function() {
var allProducts;
allProducts = [
{
id: 1,
name: "Book",
selected: true
}, {
id: 2,
name: "Toy",
selected: true
}, {
id: 3,
name: "Phone",
selected: true
}]
私は各3つの製品(書籍、玩具及び電話)のチェックボックスをリスト私の見解では、マスターコントロールを持っています:これらはデフォルトでチェックされ
<div style="float:left" ng-init="allProducts.products = {}" >
<div ng-repeat="p in Data.products">
<div style="font-size: smaller">
<label><input id="divPlatorm" ng-model="products[p.name]" ng-init="products[p.name] = true" type="checkbox"/>
{{p.name}}</label>
</div>
</div>
</div>
次に、同じ製品が行で繰り返されているテーブル:
<div ng-repeat="line in lineProducts" ng-init="line.products = {}">
<div id="sc-p-enc" ng-repeat="p in Data.products">
<div id="sc-p-plat" style="font-size: smaller">
<label id="pl-label"><input ng-checked="products[p.name]" ng-model="line.products[p.name]" ng-init="line.products[p.name] = true" type="checkbox"/>
{{p.name}}</label>
</div>
</div>
</div>
マスター製品をチェック/チェック解除すると、対応するチェックボックスが行内で変更されます。だから私は(書籍、おもちゃと電話)と100行がある場合、チェックされていないおもちゃ私はすべてのおもちゃが行のどこでチェックされていないか見ることができます。
コントローラにデータを送信すると、チェックが外されていてもすべてのToys = trueが表示されます。
私が物理的に行に行くと、各おもちゃのチェックを外し、私のコントローラートイ= Falseにデータを送信します。
マスタチェックボックスから制御すると、チェックボックスが選択状態に変わるのはどうすればわかりますか?
私はここで見つけるポストを踏襲しているが、私は、これは私のシナリオに適用されると思ういけない: AngularJS: ng-model not binding to ng-checked for checkboxes
コードの一部が欠落しています。フィドル/パンクが助けになるでしょう。それ以外は 'ng-repeat'の中でIDを再利用しています。ドキュメント内に同じidを持つ多くの要素が生成されます。そしてあなたは 'ng-init'を広範囲に使っています。 'ng-init'は一般にベストプラクティスではないビュー内に手続き型ロジックを挿入すると思います。 –