通过父选择值过滤子选择对象时,我使用下面的代码得到过滤器的结果。 (过滤器基于范围变量$ scope.le_form.categories.id)
但我只想显示孩子选择,如果过滤器不为空:
<div ng-show="(labels|filter:labelFilter).length">
<label>Labels in categories</label>
<select ng-options="l.label for l in labels | labelFilter: {cats: le_form.categories.id}" ng-model="le_form.product_labels_uid">
<option value="" disabled>Select</option>
</select>
</div>
所以,我的过滤器有效,但我不认为 ng-show 是真的,除非在其过滤结果中找到父ID。
当然,您在ng-show上看到的那种情况有效,但如果过滤器没有返回任何结果,它将不会隐藏div。我怎么能这样做?
答案 0 :(得分:0)
我用var创建了这个$ watch来保存过滤后的结果,所以我可以算一下:
$scope.$watch("le_form.categories_uid.id", function(query){
$scope.filteredData = $filter("filter")($scope.labels, query);
});
然后我可以:
纳克放映= “filteredData.length”
但问题是过滤器遍历所有对象道具,因此出现了错误的结果。 为了确定filteredData内容,我不得不在$ watch中复制自定义过滤器的逻辑:
$scope.$watch("le_form.categories_uid.id", function(query){
var arr = [];
$scope.filteredData = $filter("filter")($scope.labels, query);
for (var i = 0; i < $scope.filteredData.length; i++) {
if ($scope.filteredData[i].categories_uid == query) {
arr.push($scope.filteredData[i]);
}
}
$scope.filteredData = arr;
});
如果这是正确的方法,它真的不知道ATM,但它确实有用。
答案 1 :(得分:0)
基本上你可以默认通过twitter bootstrap隐藏和ng-show =“myValue” 你可以写$ scope.myValue()= function} { 在控制器上做你的逻辑 获取过滤项目... }
类别中的标签 选择