【问题标题】:Angularjs UI multiselect with initial selection带有初始选择的Angularjs UI多选
【发布时间】:2017-04-04 04:10:19
【问题描述】:

我正在使用 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>

现在如何在页面重新加载时显示选定的类别。选定的类别将保存在数据库中,在页面重新加载时它们将在客户端可用,但我如何将它们显示为选定的并且它们也不能出现在下拉列表中。

编辑 nicost 建议将从数据库中提取的选定类别分配给 $scope.SelectedCategories,从而解决了我的一半问题,但剩下的问题是这些类别也出现在下拉列表中。

ui multiselect 的默认行为是,如果我从下拉列表中选择一个类别,它会显示在上面的文本框中,并且该类别将从下拉列表中删除,当我从所选类别中删除任何类别时,该类别出现在下拉列表中。

在我的情况下,如果我在页面重新加载时从可用类别列表中删除选定的类别(我在服务器端这样做),那么它们不会出现在 dropdowm 中,但是当我删除任何选定的类别时,该类别不会出现在下拉列表。

【问题讨论】:

  • 那么到底是什么问题,您希望所选项目不出现在下拉列表中?并且页面重新加载后不再选择所选类别?
  • @nicost 是的,选定的类别没有被选中。我怎样才能显示它们被选中?
  • 正如您所说,它们存储在数据库中,因此您可以在页面加载时检索它们(当控制器加载时)并将它们分配给 $scope.SelectedCategories。很抱歉,如果没有任何具体代码,您的数据库/Web 服务看起来如何,很难提供帮助...
  • 感谢 nicost 的帮助。您的帮助解决了我的一半问题。我已经编辑了我的问题以详细说明问题的其余部分。

标签: javascript angularjs angular-ui ui-select angular-ui-select


【解决方案1】:

为防止在下拉列表中显示所选类别,您必须过滤其中的值。您可以使用自定义过滤器来做到这一点:

<ui-select-choices  repeat="category in categories | filter: $select.search |filter:customFilter track by category.Id">

我为你创建了一个plunker。 我希望这会有所帮助。

【讨论】:

  • 非常感谢 nicost 这正是我想要的。
  • 很高兴能帮到你! ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 2015-12-21
相关资源
最近更新 更多