angularjs - 结合 uib-typeahead + 下拉菜单[Bootstrap 4]
问题描述
结合 uib-typeahead + 下拉菜单[Bootstrap 4]
<div class="input-group">
<input type="text" class="form-control" ng-model="vm.selectedUser"
uib-typeahead="user as user.fullname for user in vm.users | filter:$viewValue"
typeahead-on-select='vm.onSelectUser($item, $model, $label)'
typeahead-editable="false"/>
<div class='dropdown input-group-append'>
<button class='btn btn-secondary dropdown-toggle' type="button" id="dropdownMenuButton" data-toggle="dropdown">
<span class='caret'></span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<div ng-repeat='user in vm.users'>
<a class="dropdown-item" href ng-click='vm.onSelectUser(user)'>{{user.fullname}}</a>
</div>
</div>
</div>
目前,我变得像下面
当我尝试选择/提前输入时,我只需要一个下拉菜单。
提前致谢。
解决方案
您不需要下拉菜单中的 ng-repeat,因为 urb-typeahead 已经在调用 vm.onSelectUser 方法。
如果您想要在单击右侧的箭头时触发下拉菜单,您可以使用 Angular 或 jQuery 更改下拉菜单元素的类,并使其可见。下拉元素将类似于以下内容:
<ul class="dropdown-menu ng-isolate-scope" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+'px', left: position().left+'px'}" role="listbox" aria-hidden="false" uib-typeahead-popup="" id="typeahead-83-4479" matches="matches" active="activeIdx" select="select(activeIdx, evt)" move-in-progress="moveInProgress" query="query" position="position" assign-is-open="assignIsOpen(isOpen)" debounce="debounceUpdate" template-url="customTemplate.html" style="top: 34px; left: 0px;">
(这取自 github 上的 uib-typeahead 示例)
推荐阅读
- python - 按列值连接数据框(无外部合并)
- angular-ui-router - angular 9 candeactivate 不起作用,尽管代码似乎很好并且没有抛出任何错误
- postgresql - PostgreSQL 12.3 Windows x86-64 安装程序无法启动
- unity3d - Sprites 未分配给材质
- r - 制作特殊矩阵的最佳方法
- java - Windows 上的 Docker 引擎忽略 Spring Boot Web 应用程序的 server.port 属性
- haskell - Haskell 中伴随函子的函数依赖
- java - spring-cloud bus kafka RemoteApplicationEvent originService 刷新时为空
- quartz-scheduler - 如何通过石英调度程序获取错误总数
- apache-kafka - 当生产者停止一段时间后,为什么kafka最后一个日志段的大小会减小?