2014-02-10 49 views
1

我有一个选择框,这样基本上不用通过有关部门的数组,看看哪些项目是可行的上级部门AngularJS - ngOptions条件

<select class="editSelectBox" ng-model="dept.parentDepartment" 
ng-options="dept as dept.name for dept in depts track by dept.id" 
ng-change="dept.parentDepartment" ng-click="$event.stopPropagation()"> 
    <option value="">None</option> 
</select> 

但是,一个部门不能有父这本身。无论如何不显示一个选项,允许它将自己设置为父项?由于它正在经历一系列所有部门,所以除非给出条件,否则该选项将在那里。

回答

0

你想提出一个过滤器在你的ng-options。这个过滤器应该采取你的部门阵容,并删除你不想要的部门。因此,您将需要通过该部门,或至少它的索引,给您的过滤功能

ng-options=".. as ... for .. in depts | filterFunction:dept" 

Use filter on ng-options to change the value displayed

+0

我似乎不能在部门传递的传递到被的filterFunction总是引用到自己... – kotsumu

+0

要过滤的部门名单,并通过一个部门作为参数传递给过滤器。 – NicolasMoise

+0

在这种情况下,您的过滤器中的“部门”与您的ng-repeat中的“部门”不同。 – NicolasMoise

0

一种方法是使用depts阵列中的一个回调更新的过滤版本观察者dept.parentDepartment

为什么不一个角度滤波器?因为它是在每个摘要循环中进行评估的。