ng-repeat中的ng-if不起作用。
ng-if inside ng-repeat won't work的问题出现的原因是ng-if指令内部不需要使用插值表达式{{}},它直接接受一个表达式,该表达式将针对当前作用域进行评估。解决方法可以是使用过滤器来实现相同的功能,也可以在控制器内部进行过滤以提高性能。
具体解决方法如下:
1. 使用过滤器:
ng-repeat="x in maq | filter: {index: 0} as filterdMaq"
2. 在控制器内部进行过滤:
$http.get('data.json').then(function(response){ $scope.dataCopy = response.data; //this is original copy of an maq. //filtered maq $scope.maq = $filter('filter')(angular.copy($scope.dataCopy), { index: 0}, true); });
如果索引值将会改变,那么你还需要在滑动事件中执行过滤操作。可以通过调用一个函数来实现,例如:
确保在函数中对本地副本maq进行过滤,不要再次向服务器请求maq数据。
在加载json时实现过滤器时可能会遇到问题,此时需要确保在控制器函数中添加$filter依赖。
如果索引值从0到9999变化,如果只想要精确匹配,可以在滑块元素上添加step="10"属性,这将在滑块上添加10个点的间隔。在ionic中可能有step属性,具体需要查看ionic文档。
如果想要实现精确匹配,可以在过滤器的最后添加true参数,例如:
$scope.maq = $filter('filter')(angular.copy($scope.dataCopy), { index:maquina }, true);
通过以上方法,可以解决ng-if inside ng-repeat won't work的问题,并实现动态的过滤功能。