【发布时间】:2014-10-30 01:49:14
【问题描述】:
我有一段重复多次的工作代码,因此非常适合 ng-repeat 循环。 例如,我的代码的两个实例如下。
<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>
这是 Javascript 中的 filterParamDisplay 数组:
$scope.filterParamDisplay = [
{param: 'userName', displayName: 'User Name'},
{param: 'userEmail', displayName: 'User Email'}
];
我一直试图在 ng-repeat 循环中这样做,但到目前为止没有成功。 这是我在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>
问题出在上面的 ng-model 变量中,以及 ng-click 和 ng-show 中的 $index 中。 不知道这是否可以完成,非常感谢任何帮助,谢谢!
更新: 感谢所有的答案,使用
<div ng-repeat="p in filterParamDisplay">
...
ng-model="searchParams[p]"
效果很好!
仍然在使用 $index 无法正常工作的 showParam 和 resetSearchField 函数上苦苦挣扎。这是我的代码。
$scope.searchParams = $state.current.data.defaultSearchParams;
$scope.resetSearchField = function (searchParam) {
$scope.searchParams[searchParam] = '';
};
$scope.showParam = function (param) {
return angular.isDefined($scope.searchParams[param]);
};
【问题讨论】:
-
你不需要做
showParam(filterParamDisplay[$index])。ShowParam(param)本身应该可以工作,因为param是由ngRepeat设置的 -
searchParams字段肯定有问题。你能分享一下你的js,其中包含searchParams和resetSearchField。
标签: javascript angularjs angularjs-ng-repeat angular-ngmodel