I have this working piece of code that repeats several times, so it works great for the ng-repeat loop. For example, two instances of my code are as follows.
<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>
This is the filterParamDisplay array in Javascript:
$scope.filterParamDisplay = [ {param: 'userName', displayName: 'User Name'}, {param: 'userEmail', displayName: 'User Email'} ];
I tried to do this in an ng-repeat loop, but haven't had time yet. This is what I encoded 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>
The problems relate to the ng-model variable above and to the $ index in ng-click and ng-show. Not sure if this can be done at all, any help is much appreciated, thanks!
UPDATE: Thanks for all the answers using
<div ng-repeat="p in filterParamDisplay"> ... ng-model="searchParams[p]"
It works great!
Still struggling with showParam and resetSearchField functions that don't work properly using $ index. Here is my code.
$scope.searchParams = $state.current.data.defaultSearchParams; $scope.resetSearchField = function (searchParam) { $scope.searchParams[searchParam] = ''; }; $scope.showParam = function (param) { return angular.isDefined($scope.searchParams[param]); };