根据官方ui-bootstrap上发现的文档,typeahead指令“使用与select directive相同,灵活的语法”
但不幸的是,似乎typeahead指令拒绝使用select
支持的以下语法列表来迭代对象源
for object data sources:
label for (key , value) in object
select as label for (key , value) in object
label group by group for (key, value) in object
select as label group by group for (key, value) in object
我认为UI-Bootstrap的ui-bootstrap-tpls-0.4.0.js
需要进行编辑(在2749
行附近)以允许这种功能
所以我的问题是什么是angular和ui-bootstrap友好的方法来实现这个功能,(我可以通过用对象友好的东西替换.length
来做到这一点,但我想有更多支持select
对象数据源语法的方法比我能提供的更好:
谢谢,
答案 0 :(得分:3)
实际上,来自http://angular-ui.github.io/bootstrap/的typeahead指令的当前实现仅适用于作为数组的源,因此无法迭代对象。我在文件中打开了一个问题来澄清这个问题:
https://github.com/angular-ui/bootstrap/issues/715
罪魁祸首就是这段代码,真的: https://github.com/angular-ui/bootstrap/blob/master/src/typeahead/typeahead.js#L109-L115
虽然将其切换到angular.forEach
会使情况更好,但主要问题是内置的AngularJS过滤器无法在对象上运行...所以你必须编写自己的匹配逻辑。这就是为什么我决定放弃对(key, value)
语法的支持。
目前您最好的选择是将对象转换为数组。
因此,我将更新文档以明确支持哪些内容以及哪些内容不受支持。但如果您能在这里看到完美的解决方案,请随时发送拉动请求!