我正在看这个plunkr,我无法相信。您可以看到,如果名称与搜索字符串匹配的人员存在于people
数组中,则该人员将显示在下拉列表中,否则建议创建一个此(new)
字符串表示的新人。但是它如何决定展示什么元素?似乎这两个有条件显示/隐藏的div对它负责,对吗?
<div ng-if="person.isTag" ng-bind-html="person.name +' <small>(new)</small>'| highlight: $select.search"></div>
<div ng-if="!person.isTag" ng-bind-html="person.name + person.isTag| highlight: $select.search"></div>
但等等,这是什么? Person对象没有isTag属性,或者它们是什么?我无法在demo.js
中看到它。 这是如何工作的?这个神秘的isTag
旗帜来自哪里?请,我想我会疯了。
而且,为什么将person.name
与布尔值连接(我假设它是布尔值)值为person.isTag
?顺便说一下,这个例子是我在angularjs select2文档页面上找到的那个例子,我刚剥离了所有其他的例子。
this is original plunker
答案 0 :(得分:1)
如果 person
对象有isTag
,则会使用"(new)"
后缀呈现该名称。
模板基本上定义了如何使用isTag
属性呈现对象,而没有。
第一个模板 - 其呈现由ng-if="person.isTag"
控制 - 在isTag
属性定义且真实时呈现。
isTag
引用person
对象的属性,定义如下:
<ui-select-choices repeat="person in people">
答案 1 :(得分:1)
isTag
媒体资源来自$select.searchInput.on('keyup', function(e) {
中的SelectMultipleDirective
。请注意,如果从代码中删除multiple
,则永远不会设置此属性。
https://github.com/angular-ui/ui-select/blob/master/src/uiSelectMultipleDirective.js#L252