2

情况:

在我的应用程序中,我使用angular ui-select显示人员列表(对象数组)。

它工作正常,除了一个小问题:

列表的第一项不可选择。我不能选择它。


代码:

<ui-select multiple tagging tagging-label="new tag" ng-model="multipleDemo.selectedPeople" theme="select2" ng-disabled="disabled" style="width: 800px;">
  <ui-select-match placeholder="Select person...">{{$item.name}} &lt;{{$item.email}}&gt;</ui-select-match>
  <ui-select-choices repeat="person in people | propsFilter: {name: $select.search, age: $select.search}">
    <div ng-bind-html="person.name | highlight: $select.search"></div>
    <small>
      email: {{person.email}}
      age: <span ng-bind-html="''+person.age | highlight: $select.search"></span>
    </small>
  </ui-select-choices>
</ui-select>


柱塞:

http://plnkr.co/edit/CVaMvt4zBUBD2QEsfIdk?p=preview


问题:

我如何选择 angular ui-select - 对象数组中的第一项?


笔记:

Alexander 的答案是正确的,因为为 ui-select 哪个版本小于 0.9.5 给出了这个问题的解决方案。

从 0.9.5 版开始。这个问题已被解决。

这是在 GitHub 中打开的问题:

https://github.com/angular-ui/ui-select/issues/477#issuecomment-66795541

4

2 回答 2

1

修复v0.9.4。.

调试 10 分钟后,我发现这一行有错误(ui-select source code

item = ctrl.tagging.fct !== undefined 
         ? ctrl.tagging.fct(ctrl.search) 
         : item.replace(ctrl.taggingLabel,'');

但是项目是对象而不是字符串,这就是发生错误的原因。如果您将此 tagging-label="" 选项设置为 false,您将可以选择第一项。我不知道何时将item作为字符串传递,也许这是错误,或者需要设置其他选项来实现这一点..

于 2014-12-05T09:39:04.357 回答
0

事实证明,在 v0.9.4 及更早版本中存在导致此问题的标记功能的错误。最好的解决方法是更新ui-select到 0.9.5+ 版本。

作为旁注,您的示例缺少所需的tagging$scope 函数,请阅读插件的文档:https ://github.com/angular-ui/ui-select/wiki/ui-select 。

tagging- 启用标记模式(即时添加新项目)。接受一个字符串,它是一个作用域函数。如果您的模型是对象数组,则此字符串是必需的。该函数将新项目作为字符串传递,并应返回一个对象,该对象是要推送到项目数组的转换值

如果您正在处理对象数组,则必须定义一个标记函数,以便指令知道您希望将要推送到数组的对象应该是什么样子。

于 2014-12-12T15:06:23.807 回答