获得了一个难以解决的错误的时间链。我正在使用UI-select实现多选择控件。
正如您在该站点的plunks中看到的那样,当您单击输入时,您将获得下拉列表。
尝试在单击输入时,我什么都不会得到任何东西,除非我先单击列表,然后在列表下方约1厘米处(实际ul
所在)。
否则,如果我开始键入(它过滤和搜索),它确实可以工作。其他一切也可以工作 - select 和 on-remove 处理器。
我什至复制并粘贴了AngularJS UI团队在其网站上的plunk中。
<ui-select multiple ng-model="ctrl.multipleDemo.selectedPeople" theme="bootstrap" ng-disabled="ctrl.disabled" sortable="true" close-on-select="false" style="width: 800px;">
<ui-select-match placeholder="Select person...">{{$item.name}} <{{$item.email}}></ui-select-match>
<ui-select-choices repeat="person in ctrl.people | propsFilter: {name: $select.search, age: $select.search}">
<div ng-bind-html="person.name | highlight: $select.search"></div>
<small>
email: {{person.email}}
age: <span ng-bind-html="''+person.age | highlight: $select.search"></span>
</small>
</ui-select-choices>
</ui-select>
所以,为什么我必须单击实际的ul
,而不是input
(这是在给定的plunks中工作的方式)?
一些其他信息。上面我提到,我首先必须单击input
,然后在其下方单击1cm。这是因为ul
在单击input
时被渲染,但是它的不透明度为0。我发现为什么在Select JavaScript代码中发生这种情况,但是评论它并没有真正解决任何问题。它适用于第一次点击,但所有后续点击都需要再次下面1厘米(即在ul
上)。
起初,我认为我对动画的使用可能是原因,但我删除了这一点,问题没有解决。
我已经准备了一个与我的项目不同的plunk。我在select.js
文件的第1455行中添加了debugger
语句。在随后的块中, andaine api Enter 事件将处理程序连接起来。在plunk中,程序执行跟随该处理程序(大概是因为该事件已发射)。在我的项目中,它永远不会开火。这是那个处理程序:
$select.$animate.on('enter', dropdown, function (elem, phase) {
if (phase === 'close' && needsCalculated) {
calculateDropdownPosAfterAnimation();
needsCalculated = false;
}
});
奇怪的是它永远不会开火。
任何帮助将不胜感激。欢呼。
尝试以下代码...
<ui-select multiple ng-model="ctrl.multipleDemo.selectedPeople"
theme="bootstrap" sortable="true" close-on-select="false" style="width:
800px;">
<ui-select-match placeholder="Select person...">{{$item.name}} <
{{$item.email}}></ui-select-match>
<ui-select-choices repeat="person in ctrl.people | propsFilter: {name:
$select.search, age: $select.search}">
<div ng-bind="''+person.age | highlight: $select.search | highlight:
$select.search"></div>
</ui-select-choices>
</ui-select>
供您参考:https://codepen.io/mfunkie/pen/bkaai
,因此这是一个错误和打开问题,在UI-SELECT GITHUB页面上。就我而言,我正在使用ngAnimate
和multi-select
功能。