ng-repeatは、タイプ/アイテム/反復ごとに子スコープを作成するため、各タイプのng-modelを、子スコープではなく親スコープに関連付ける必要があります。これを行う1つの方法は、$parentを使用することです。
<input type="checkbox" ng-model="$parent[type]">{{ type }}
$ scope.typesが@Alexの回答のように定義されている場合、対応するチェックボックスをクリックすると、プロパティtypeOne
、、、が親スコープに表示され、プロパティの値はになります。チェックボックスをもう一度クリックすると、プロパティはそのままになり、値はに切り替わります。したがって、コードは、存在しないプロパティと、値がtrueまたはfalseに設定されたプロパティが存在するかどうかを確認する必要があります。それは少し厄介です。typeTwo
typeThree
true
false
親スコープでオブジェクトの配列を事前定義することをお勧めします。各オブジェクトのタイプ(名前)と、選択されているかどうかを示すブール値は次のとおりです。
$scope.types = [
{name: 'typeOne', selected: false},
{name: 'typeTwo', selected: false},
{name: 'typeThree', selected: false}];
その場合、$ parentは必要ありません(「type」の値は、親プロパティの(プリミティブ)値のコピーではなく、親オブジェクトへの参照になるため)。
<input type="checkbox" ng-model="type.selected">{{ type.name }}
AngularJSのスコープのプロトタイプ/プロトタイプの継承のニュアンスは何ですか?も参照してください。ng-repeatスコープと子スコープの詳細については、こちらをご覧ください。