Non riesco a trovare lo scoping all'interno di ng-repeat. Voglio creare selezioni concatenate e voglio mantenere ciascuna riga in ng-repeat per esistere separatamente in ambiti separati. Al momento la modifica della prima selezione in una qualsiasi delle righe cambierà la seconda selezione in tutte le righe.concatenato selezionare all'interno di ng-repeat
(Esempio di vita reale: ho un modulo in cui devo aggiungere auto, prima scegliere un "Make", estrarre i suoi "Modelli" da un'API e mostrare i modelli nella seconda selezione. Gli utenti devono essere in grado di aggiungere qualsiasi numero di automobili)
HTML:.
<div ng-controller="MyCtrl">
<div ng-repeat="row in rows">
<select ng-options="option.value as option.title for option in options1" ng-model="row.select1" ng-change="updateSelect2(row.select1)"></select>
<select ng-options="option.value as option.title for option in options2" ng-model="row.select2"></select>
</div>
<a ng-click="addRow()">Add Row</a>
</div>
JS:
function MyCtrl($scope) {
$scope.rows = [{}];
$scope.options1 = [
{title: 'Option 1', value: '1'},
{title: 'Option 2', value: '2'},
{title: 'Option 3', value: '3'}
];
$scope.options2 = [];
$scope.updateSelect2 = function(val) {
if (val === '1') {
$scope.options2 = [
{title: 'A', value: 'A'},
{title: 'B', value: 'B'}
];
} else if (val === '2') {
$scope.options2 = [
{title: 'AA', value: 'AA'},
{title: 'BB', value: 'BB'}
];
} else {
$scope.options2 = [
{title: 'AAA', value: 'AAA'},
{title: 'BBB', value: 'BBB'}
];
}
};
$scope.addRow = function() {
$scope.rows.push({});
};
}
Ho pensato a un modo per memorizzare le opzioni in una variabile nel campo di applicazione del ng-repeat, ma questo fa il lavoro perfettamente! Grazie! :) – orszaczky
In realtà ho pensato a un modo migliore. Guardalo [qui] (http://jsfiddle.net/g0zxedmz/) – yarons
Grazie per aver condiviso questo! Questo sarebbe davvero un bel modo, se avessi già tutte le opzioni possibili, ma devo interrogare una API per ottenere le opzioni per la seconda selezione in base alla prima selezione. (Semplicemente non volevo complicare eccessivamente l'esempio) - A meno che ... Options2 sia un array, e spingo cose in esso basate su $ index usando una funzione di ng-change ... – orszaczky