Angular JS: ng-repeat avec dynamique ng-model

J'ai cette de travail morceau de code qui est répété plusieurs fois, d'où serait formidable pour un ng-repeat boucle.
Par exemple, les deux instances de mon code sont les suivantes.

    <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>

C'est le filterParamDisplay tableau en Javascript:

    $scope.filterParamDisplay = [
        {param: 'userName', displayName: 'User Name'},
        {param: 'userEmail', displayName: 'User Email'}
    ];

J'ai essayé de le faire dans un ng-repeat boucle, mais sans succès jusqu'à présent.
C'est ce que j'ai codé 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>

Les problèmes sont dans le ng-variable du modèle ci-dessus, et dans le $index dans le ng-click et ng-show.
Vous ne savez pas si cela peut être fait à tout, toute aide est très appréciée, merci!


Mise à JOUR:
Merci pour toutes les réponses, à l'aide de

     <div ng-repeat="p in filterParamDisplay">
...
   ng-model="searchParams[p]" 

Fonctionne très bien!

Encore du mal sur le showParam et resetSearchField fonctions qui ne fonctionnent pas correctement à l'aide de $index. Voici mon code.

    $scope.searchParams = $state.current.data.defaultSearchParams;

    $scope.resetSearchField = function (searchParam) {
        $scope.searchParams[searchParam] = '';
    };

    $scope.showParam = function (param) {
        return angular.isDefined($scope.searchParams[param]);
    };
  • Vous n'avez pas besoin de faire showParam(filterParamDisplay[$index]). ShowParam(param) lui-même doit travailler, depuis param est défini par la ngRepeat
  • Il doit y avoir un problème avec searchParams champ. Pourriez-vous partager votre js qui contient searchParams et resetSearchField.
InformationsquelleAutor MDT | 2014-09-05