我正在看这个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">

07-26 06:54