Od NG-repeat tworzy zakres podrzędny dla każdego typu/szt/iteracji, musimy skojarzyć NG-modelu dla każdego typu z zakresu nadrzędnego, a nie zakresu dziecięcej. Jednym ze sposobów, aby to zrobić jest użycie $ parent:
<input type="checkbox" ng-model="$parent[type]">{{ type }}
jeśli $ scope.types jest zdefiniowana jak w @ odpowiedź Alexa, potem właściwości typeOne
, typeTwo
i typeThree
pojawi się na zakres dominującej, jeżeli odpowiednia opcja nie jest zaznaczona kliknięte, a wartością nieruchomości będzie true
. Jeśli zaznaczone pole wyboru zostanie ponownie kliknięte, właściwość pozostanie, a wartość zmieni się na false
. Twój kod musiałby zatem sprawdzić nieistniejące właściwości i właściwości, które istnieją z wartością ustawioną na true lub false. To trochę nieładne.
wolałbym predefine tablicę obiektów w zakresie dominującej, gdzie każdy obiekt ma rodzaj (nazwę), a wartością logiczną, aby wskazać, czy jest zaznaczone czy nie:
$scope.types = [
{name: 'typeOne', selected: false},
{name: 'typeTwo', selected: false},
{name: 'typeThree', selected: false}];
Następnie, $ rodzic nie jest wymagane (ponieważ wartość „typu” będzie odwołanie do obiektu nadrzędnego, zamiast kopii() wartości pierwotnej w lokalizacji macierzystej):
<input type="checkbox" ng-model="type.selected">{{ type.name }}
Zobacz również What are the nuances of scope prototypal/prototypical inheritance in AngularJS? aby dowiedzieć się więcej o ng -repeat i zakresy potomne.
Jeśli używasz funkcji w zasięgu, to '$ parent.myFunc()' może być również powiązane i mieć parametry przekazane '$ parent.myFunc (val) .cost' –