Angular ui-select对象数组 - 第一个项目不可选

时间:2014-12-05 07:14:14

标签: javascript arrays angularjs select ui-select

状况:

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

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

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


CODE:

<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>


PLUNKER:

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


问题:

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


注意:

亚历山大的答案是正确的,因为为ui-select提供了解决这个问题的方法&lt;比0.9.5。

从版本0.9.5开始。这个问题已经解决了。

这是在GitHub中打开的问题:

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

2 个答案:

答案 0 :(得分: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 什么时候会作为字符串传递,也许这是bug,或者需要设置其他选项才能实现...

答案 1 :(得分:0)

事实证明v0.9.4及更早版本中存在一个带有标记功能的错误。最好的解决方法是将ui-select更新为版本0.9.5 +。

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

  

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

如果你正在使用一组对象,你必须定义一个标记函数,以便指令知道你希望将对象推送到数组的样子。