我正在使用Angularjs UI选择。我遇到了问题。
这是我的代码:
使用Javascript:
$scope.user.SelectedCategories
$scope.Categories= [
{ value: 'Reading', name: 'Reading Books',Id : 4 },
{ value: 'Sports', name: 'Physical Activity',Id : 9 },
{ value: 'Movies', name: 'Entertainment',Id : 7 },
{ value: 'Video Games', name: 'Passion',Id : 11 }
];
HTML:
<div class="input-group">
<ui-select multiple ng-model="user.SelectedCategories" theme="bootstrap" sortable="true" close-on-select="false" style="width: 350px;">
<ui-select-match placeholder="Select Categories...">{{$item.Value}}</ui-select-match>
<ui-select-choices repeat="category.Id as category in Categories">{{category.Value}}
</ui-select-choices>
</div>
现在如何在页面重新加载时显示选定的类别。选择的类别将保存在数据库中,并且在页面重新加载它们将在客户端可用但是如何将它们显示为已选择但它们也不得出现在下拉列表中。
修改 我的问题的一半是通过尼克斯特建议将从数据库中提取的选定类别分配到$ scope.SelectedCategories来解决的,但问题的其余部分也是这些类别也出现在下拉列表中。
ui multiselect的默认行为是,如果我从下拉列表中选择一个类别,它将在上面的文本框中显示为已选中,并且该类别将从下拉列表中删除,当我从所选类别中删除该类别时,该类别将会出现在下拉列表中。
在我的情况下如果我从可用类别中删除所选类别&#39;列表(我在服务器端执行此操作)在页面重新加载,然后它们不会出现在下拉列表中,但是当我删除任何选定的类别时,该类别不会出现在下拉列表中。
答案 0 :(得分:2)
要阻止在下拉列表中显示所选类别,您必须过滤其中的值。您可以使用自定义过滤器执行此操作:
<ui-select-choices repeat="category in categories | filter: $select.search |filter:customFilter track by category.Id">
我为你创建了plunker。 我希望这会有所帮助。