Ho questo working pezzo di codice che viene ripetuto più volte, quindi sarebbe ottimo per un ciclo ripetizione ng. Ad esempio, due istanze del mio codice sono le seguenti.JS angolare: ng-repeat con dynamic ng-model
<div>
<input type="text" ng-model="searchParamaters.userName" placeholder="User Name"/>
<i class="fa fa-times" ng-click="resetSearchField(filterParamDisplay[0].param)" ng-show="showParam(filterParamDisplay[0].param)"></i>
</div>
<div>
<input type="text" ng-model="searchParamaters.userEmail" placeholder="User Email"/>
<i class="fa fa-times" ng-click="resetSearchField(filterParamDisplay[1].param)" ng-show="showParam(filterParamDisplay[1].param)"></i>
</div>
Questa è la matrice filterParamDisplay in Javascript:
$scope.filterParamDisplay = [
{param: 'userName', displayName: 'User Name'},
{param: 'userEmail', displayName: 'User Email'}
];
ho cercato di farlo in un ciclo ng-repeat, ma senza successo finora. Questo è quello che ho codificato atm.
<div ng-repeat="param in filterParamDisplay">
<input type="text" ng-model="searchParams[{{param}}]" placeholder="{{param.displayName}}"/>
<i class="fa fa-times" ng-click="resetSearchField(filterParamDisplay[$index].param)" ng-show="showParam(filterParamDisplay[$index].param)"></i>
</div>
I problemi sono nella variabile ng-modello di cui sopra, e nell'indice $ nel ng-clic e ng-show. Non so se questo può essere fatto, qualsiasi aiuto è molto apprezzato, grazie!
UPDATE: Grazie per tutte le risposte, utilizzando
<div ng-repeat="p in filterParamDisplay">
...
ng-model="searchParams[p]"
funziona benissimo!
Ancora in difficoltà sulle funzioni showParam e resetSearchField che non funzionano correttamente utilizzando ancora $ index. Ecco il mio codice.
$scope.searchParams = $state.current.data.defaultSearchParams;
$scope.resetSearchField = function (searchParam) {
$scope.searchParams[searchParam] = '';
};
$scope.showParam = function (param) {
return angular.isDefined($scope.searchParams[param]);
};
Non c'è bisogno di fare 'showParam (filterParamDisplay [index $])'. 'ShowParam (param)' stesso dovrebbe funzionare, dal momento che 'param' è impostato da' ngRepeat' – aarosil
Ci deve essere un problema con il campo 'searchParams'. Potresti condividere il tuo js che contiene 'searchParams' e' resetSearchField'. –