Dal NG-repeat crea un ambito figlio per ogni tipo/item/iterazione, abbiamo bisogno di associare il modello ng per ogni tipo con lo scopo genitore, piuttosto che la portata del bambino. Un modo per farlo è quello di utilizzare $ genitore:
<input type="checkbox" ng-model="$parent[type]">{{ type }}
Se $ scope.types è definito come in @ risposta di Alex, poi proprietà typeOne
, typeTwo
, e apparirà typeThree
sulla portata genitore se la casella corrispondente è cliccato, e il valore della proprietà sarà true
. Se si fa nuovamente clic su una casella di controllo, la proprietà rimane e il valore passerà a false
. Il tuo codice dovrebbe pertanto verificare la presenza di proprietà inesistenti e di proprietà esistenti con il valore impostato su true o false. È un po 'disordinato.
preferirei predefinire un array di oggetti sul campo di applicazione genitore, dove ogni oggetto ha il tipo (nome), e un valore booleano per indicare se è selezionato o meno:
$scope.types = [
{name: 'typeOne', selected: false},
{name: 'typeTwo', selected: false},
{name: 'typeThree', selected: false}];
Poi, $ genitore non è necessario (perché il valore di "tipo" sarà un riferimento all'oggetto genitore, piuttosto che una copia del valore della proprietà genitore (primitiva)):
<input type="checkbox" ng-model="type.selected">{{ type.name }}
Vedi anche What are the nuances of scope prototypal/prototypical inheritance in AngularJS? saperne di più su ng -ripetizione e ambiti figlio.
fonte
2012-12-22 02:31:54
Se si utilizza una funzione nell'ambito dell'oscilloscopio '$ parent.myFunc()' può anche essere concatenata e avere parametri passati '$ parent.myFunc (val) .cost' –