当前位置: 首页 > 面试题库 >

Bootstrap-UI Typeahead在结果列表中显示多个属性?

邰伟彦
2023-03-14
问题内容

我正在使用ui-bootstrap
typeahead。效果很棒!但是,我想知道是否有可能在结果列表中显示多个属性甚至HTML。典型问题:搜索返回多个具有相同值的对象。例如,搜索“令人惊叹的宽限期”返回[“令人惊叹的宽限期”,“令人惊叹的宽限期”],其中一个是电影,一个是歌曲。我希望结果列表更像:

amazing grace | movie
amazing grace | song

…,以便用户确切知道他们在选择什么。更好的是标题旁边的图标。换句话说,列表中的每个结果都包含一些HTML。这些都可以开箱即用吗?


问题答案:

关于typeahead来自http://angular-ui.github.io/bootstrap/的指令的注意事项是,它试图模仿AngularJS
的select指令所使用的语法。这意味着用于选择要绑定的模型和标签的所有表达式都是AngularJS表达式。反过来,这意味着您可以使用任何AngularJS表达式来计算标签的文本。

例如,要显示所需的文本,您可以编写:

typeahead="item as item.title + ' (' + item.type + ')' for item in titles | filter:{title:$viewValue}"

前提是您的数据模型如下所示:

$scope.titles = [
    {title: 'Amazing Grace', type: 'movie'},
    {title: 'Amazing Grace', type: 'song'}
  ];

在这里工作的小伙伴:http
://plnkr.co/edit/VemNkVnVtnaRYaRVk5rX?
p= preview

typeahead属性中为标签编写复杂的表达式可能很难看,但是没有什么可以阻止您将标签计算逻辑移动到作用域上公开的函数,例如:

typeahead="item as label(item) for item in titles | filter:{title:$viewValue}"

其中label是在范围内公开的函数:

$scope.label = function(item) {
    return item.title + ' (' + item.type + ')';
  };

另一个pl:http
://plnkr.co/edit/ftKZ96UrVfyIg6Enp7Cy?
p=
preview

就有关图标的问题而言,您可以将HTML嵌入标签表达式中,但是编写和维护起来很麻烦。幸运的是,typeahead指令允许您为匹配项提供自定义模板,如下所示:

typeahead-template-url="itemTpl.html"

在自定义模板中,您可以使用所需的任何表达式或AngularJS指令。在ngClass指令的一点帮助下,添加图标变得很简单:

<script type="text/ng-template" id="itemTpl.html">
   <a tabindex="-1">
      <i ng-class="'icon-'+match.model.type"></i>
      <span  ng-bind-html-unsafe="match.model.title | typeaheadHighlight:query"></span>
   </a>
</script>

和工作中的小伙伴:http
://plnkr.co/edit/me20JzvukYbK0WGy6fn4?
p=
preview

整洁的小指令,不是吗?



 类似资料:
  • 问题内容: 如何构造一个SQL语句以跨多个平面无关表运行,并显示结果以及选择结果和结果的表名。 这种情况是这样的,我有几个表,每个表具有相同的列名。这是我从外部各方收到的数据,它们原样存储在不同的表中。 相同的表如下所示: 我需要一个SQL语句,该语句可在所有表中使用伪代码进行搜索: 在以下演示文稿中给出结果: 更复杂的是,该列可能不在所有表中,因此,如果在该表中找不到该列,则需要仔细进行查询。

  • 我正在使用hibernate 4和Spring 3。 我有5个表,每个表映射一个实体类。现在,如果我必须从1个表中选择列,我将执行以下操作: 此结果中的此值将为EmployeeEntity类型。 或者我也可以使用标准。 现在我的要求是我必须从所有5个表中得到结果。每个表中有1-2列。 早些时候,它是一个1表,所以我得到了一个实体,现在我得到了5个表的结果,所以如何在实体中映射它。 List res

  • 我正在CodeIgniter上开发一个测验应用程序。 随机从数据库中挑选25个问题并显示给用户。 以下是我的代码: 我想在一个div上显示前10个结果。 当用户单击下一个按钮时,它会显示下一个10个结果。 (隐藏当前div并显示下一个) 我只想知道我如何打破结果,并限制每个分区10个问题。

  • 如果这很简单,请原谅,但我有一个for-each循环,用于搜索JSON数据以获得搜索结果。然后我有一些preg_match语句,它们将查看JSON中的一些标记,如果它们是匹配的,则在div中显示缩略图。目前所有这些都可以使用。但它目前在自己的Div中显示每个结果,如果有匹配,我只需要五个Div,其中包含多个图像。 我不太明白如何实现这一点,会是把结果放入数组,然后在div中显示结果的情况吗? 任何

  • 问题内容: 我有那个代码。不幸的是,该错误来自,其中包含 错误提示: 然而,当我把它编译出来。那么,如何在不显示错误的情况下显示? 编辑:也许一个更好的问题是你如何显示的? 问题答案: 你可能无法直接执行此操作。从文档list_display 不支持ManyToManyField字段,因为这将需要为表中的每一行执行一个单独的SQL语句。如果仍然要执行此操作,请为模型提供一个自定义方法,然后将该方法

  • 问题内容: 激活脚本的以下部分时,它将在结果中显示所有逗号和单引号(和括号)。 因此,例如: 我想清理它,所以看起来不错。那可能吗? 我所说的“好”是这样的: 这是完整的脚本: 问题答案: 你需要。 在Python 2.x中,您正在执行的操作被解释为在使用3.x语法时打印一个元组。 例: