我正在看这个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
与boolean(我认为是boolean)值person.isTag
连接起来?顺便说一句,这个示例是我在angularjs select2文档页面上找到的那个示例的分支,我只是剥离了所有其他示例。this is original plunker
最佳答案
如果person
对象具有isTag
,则它将使用"(new)"
后缀呈现名称。
模板基本上定义了如何使用isTag
属性渲染对象,而没有ng-if="person.isTag"
属性。
第一个模板(由isTag
控制)的渲染是在isTag
属性已定义且正确时渲染的。person
引用对象的属性,其定义如下:
<ui-select-choices repeat="person in people">