Angular-UI UI-Select 停止将活动 class 应用于第一项的默认行为
Angular-UI UI-Select Stop default behaviour of applying active class to first item
最初显示选项时,第一项已应用活动 class。
对我来说,如果不切换搜索,这很有意义,尽管如果用户的目的是主要使用搜索功能,那么应用活动 class 似乎很笨拙——尤其是当您使用分组项目和将自定义样式应用于下拉内容。
仍然需要使用箭头键浏览项目的功能,但应该只在用户启动时出现。
似乎没有任何方法可以阻止此默认行为存在,我只是在寻找一种方法来使初始状态为无活动项目。
我有类似的需求,我只是将 $select.activeIndex = -1 设置为主要元素的焦点。这停止了在加载下拉列表时设置的活动 class 的默认行为
我能够使用父元素上的 uis-open-close 属性从下拉列表的第一项中删除活动的 class。
在模板中定义属性:
<ui-select theme="selectize" uis-open-close="$ctrl.setActiveIndex($select)">
然后在controller中设置activeIndex为-1:
setActiveIndex($select) {
$timeout(() => {
if($select.selected === undefined) {
$select.activeIndex = -1;
}
}, 25);
}
最初显示选项时,第一项已应用活动 class。
对我来说,如果不切换搜索,这很有意义,尽管如果用户的目的是主要使用搜索功能,那么应用活动 class 似乎很笨拙——尤其是当您使用分组项目和将自定义样式应用于下拉内容。
仍然需要使用箭头键浏览项目的功能,但应该只在用户启动时出现。
似乎没有任何方法可以阻止此默认行为存在,我只是在寻找一种方法来使初始状态为无活动项目。
我有类似的需求,我只是将 $select.activeIndex = -1 设置为主要元素的焦点。这停止了在加载下拉列表时设置的活动 class 的默认行为
我能够使用父元素上的 uis-open-close 属性从下拉列表的第一项中删除活动的 class。
在模板中定义属性:
<ui-select theme="selectize" uis-open-close="$ctrl.setActiveIndex($select)">
然后在controller中设置activeIndex为-1:
setActiveIndex($select) {
$timeout(() => {
if($select.selected === undefined) {
$select.activeIndex = -1;
}
}, 25);
}