0

如果我正在创建一个允许多个字段搜索的系统并希望通过下拉菜单(类似于 Redmine)来执行此操作,我该如何实现呢?具体来说,一旦我选择了“foo”字段并单击了一个显示“添加另一个字段”的按钮,我将无法再次选择“foo”?

initial fields: {"foo","bar","baz"}  
select fields.foo  
add another field
remaining fields = {"bar","baz"}

让我知道是否需要澄清。

我在这里找到了一个下拉示例。

澄清

令“foo”为整数 令“bar”为日期 令“baz”为字符串

如果用户添加字段“栏”,我将提供一个日历选择器小部件。如果用户选择“foo”,我确保该数字是有效整数。
如果用户选择“baz”,我会检查以确保它是一个有效的字符串。

因此,每个选择都会根据字段选择表现出一定的行为,因此用户必须通过“添加另一个字段”按钮单独选择每个字段。

4

1 回答 1

3

我已经做过很多次了。这是我自己的代码片段。该代码用于允许商业承包商为其公司选择“附属机构”。

在我的 HTML 视图中:

<select class="input-full" ng-model="currAff" ng-options="aff for aff in availableAffs | filter:notAlreadyAdded"></select>

注意filter:notAlreadyAdded上面的部分。

在我的控制器中:

$scope.notAlreadyAdded = function(aff){
    // search through all the affiliations that were previously added
    // if the given "aff" is in the previously-added list, return false
    // else, return true
};

在 select 上使用filter:notAlreadyAddedng-options 过滤器将遍历选项数组中的每个项目,并将该项目传递给给定的函数。然后,您可以使用该项目进行任何您想要的测试,然后您只需返回一个布尔值,告诉 Angular 是否应该在将来的可能选项列表中包含该项目。

我希望这能回答你的问题。

于 2013-10-15T14:30:19.697 回答