这个角度选择2的例子是某种巫术还是什么?

时间:2015-03-23 18:54:26

标签: javascript angularjs angular-ui angularjs-select2

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

enter image description here

2 个答案:

答案 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