【问题标题】:Search only a specific field in ui.bootstrap typeahead仅在 ui.bootstrap typeahead 中搜索特定字段
【发布时间】:2014-01-21 10:26:47
【问题描述】:

我正在改进我的 ui.bootstrap typeahead 添加一些很棒的东西,但我在这个方面很挣扎。

我创建了一个小型 Plunker 来演示我的问题:
http://plnkr.co/edit/u2Le37?p=preview

关于这个问题的两句话:
我有这个填充我的$scope.data 的对象数组,但我无法告诉typeahead 仅使用特定字段来搜索结果

$scope.data = [
  {
    name: 'Mario',
    desc: 'Super Plumber',
    id: 0,
    type: 'good'
  },
  {
    name: 'Luigi',
    desc: 'Assistant Plumber',
    id: 1,
    type: 'good'
  }, 
...


每当您在预输入中搜索时,您都会搜索对象中的每个字段,甚至是 typeid

我试过这样的解决方案,但没有成功:

typeahead="datum.name as ( datum.name +', '+ datum.desc) 
    for datum in data | filter:$viewValue | limitTo:8"

---> no change


typeahead="datum as ( datum.name +', '+ datum.desc) 
    for datum.name in data | filter:$viewValue | limitTo:8"

--> no match

如何将搜索限制在name 字段?

【问题讨论】:

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


    【解决方案1】:

    神奇的线条如下

    filter:{name: $viewValue}
    

    这会将搜索限制为仅名称字段。看看这个文档 ion for ng-filter

    对象:模式对象可用于过滤特定属性 数组包含的对象。例如 {name:"M", phone:"1"} 谓词将返回具有属性名称的项目数组 包含“M”和包含“1”的属性电话。特殊属性 名称 $ 可用于(如在 {$:"text"} 中)接受与任何 对象的属性。这相当于简单的子字符串 与上述字符串匹配。

    Plunker已更新

    【讨论】:

    • 没错!这是 typeahead 中最棒的部分——它只是建立在现有的 AngularJS 基础设施之上!
    • 太棒了!就这么简单。非常感谢你们
    • 好的,很好,过滤器在一个字段中非常棒,但是对于多个过滤器(这似乎支持如文档中所述)它的行为非常奇怪。请看看这个新的 Plunker --> plnkr.co/edit/3eTeE31b5aXX7j0EAT33?p=preview
    • @domokun - 您可以在哪里使用多个过滤器进行预输入?
    • 嘿@parsh 已经有一段时间了,但我记得我必须开发自己的过滤器才能使其适用于多个元素。如果您在 SO 上没有找到任何答案,请提出一个新问题(并给我链接或 @me),我会在此处附上我的回复,以便每个人都可以看到它以满足任何进一步的需求。
    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多