AngularJs搭配Bootstrap-select的防坑指南

Bootstrap TreeView使用教程三:制作树形下拉框 前两篇博客介绍了Bootstrap TreeView的使用方法,这篇博客就来介绍一下如何利用Bootstrap TreeView制作一个树形下拉框,先来看一下效果: 其实原理很简单,先创建一个文本框,然后在文本框下方创建树,让其不可见,当点击文本框时弹出树,选择节点后再隐藏即可。 前端代码 <!DOCTYPE html> <html> <head> &... 阅读详情

一、前因

公司的项目早就上线了,现在正处于逐步的优化当中,其中有一个就是关于下拉框的优化。因为随着公司业务的开展,进驻的经销商已经有上百家了,而普通的下拉框对选取某一个经销商着实有一定的效率低下,因此需要优化。由于网上大多数都是JQuery与boorstrap-select的搭配应用,与angularjs之间的搭配较少,因此想着写一篇拙劣的指南,如有错误,还请不吝指教!

转载请注明出处!

优化之前的样子

优化之前的html代码:

<select ng-disabled="isDisabledBranch" id="branchId" class="form-control "  ng-model="vm.branchId"
        ng-options="item.branchCode as (item.branchCode+'-'+item.branchName) for item in branchList" >
    <option value="">请选择经销商</option>
</select>

优化之后的样子——带有模糊搜索筛查的功能。

优化之后的html代码:

<select ng-disabled="isDisabledBranch" id="branchId" class="form-control selectpicker" data-live-search="true" 
        ng-model="vm.branchId"
        ng-options="item.branchCode as (item.branchCode+'-'+item.branchName) for item in branchList" >
    <option value="">请选择经销商</option>
</select>

二、实现步骤

1.下载bootstrap-select插件

官网:http://silviomoreto.github.io/bootstrap-select/(由于官网大多数情况下是打不开的,本人都是在某一时刻突然打开了官网才下下来的。)

鉴于以上情况,给大家贴一个百度网盘的:https://pan.baidu.com/s/1fvpVAtd4JAAH7xeQuQNiTg    密码:yrsh

2.需要的引用(这些都是必须的,其他的就自己看着办了)

<link rel="stylesheet" href="dist/test/css/bootstrap.min.css">(3.3.4版本。3.3.6的版本会有冲突,下拉框无法正常显示。慎用!)
<link rel="stylesheet" href="dist/test/css/bootstrap-select.css">(bootstrap-select-1.12.4)
<script src="dist/test/js/jquery.js"></script>(都可以)
<script src="dist/test/js/bootstrap.min.js"></script>
<script src="dist/test/js/bootstrap-select.js"></script>
<script src="angular/angular.js"></script>(1.6.*版本,比较落后了。)

3.实现

做完以上的,就可以直接使用bootstrap-select了。

三、关于bootstrap-select的属性介绍

1.selectpicker

只添加selectpicker这个class属性值,可实现普通的下拉框功能,没啥区别。title的作用与palcehoder一样。

<select class="selectpicker" title="请选择城市名称">
    <option>香港xg</option>
    <option>重庆cq</option>
    <option>北京bj</option>
    <option>上海sh</option>
    <option>深圳sz</option>
</select>

2.multiple

selectpicker和multiple属性的搭配使用可实现多选

<select class="selectpicker" multiple>
    <option value="1">广东省</option>
    <option value="2">广西省</option>
    <option value="3">福建省</option>
    <option value="4">湖南省</option>
    <option value="5">山东省</option>                            
</select>

3.data-live-search="true"

这个属性的默认值是false,作用是打开模糊筛查搜索框。

普通实现的html代码

<select class="selectpicker" multiple data-live-search="true">
    <option value="1">广东省</option>
    <option value="2">广西省</option>
    <option value="3">福建省</option>
    <option value="4">湖南省</option>
    <option value="5">山东省</option>                            
</select>

效果:

选项分组

<select class="form-control selectpicker" data-live-search="true" multiple>
        <optgroup label="广东省">
                <option value="1">广州市</option>
                <option value="2">深圳市</option>
                <option value="3">珠海市</option>
         </optgroup>   
          <optgroup label="广西">
                  <option value="1">南宁市</option>
                  <option value="2">柳州</option>
                  <option value="3">桂林市</option>
           </optgroup>  
           <optgroup label="山东">
                   <option value="1">烟台</option>
                   <option value="2">青岛</option>
                   <option value="3">济南</option>
             </optgroup>                          
</select>

效果:

4.data-max-options

这个属性表示最多可选几个,是需要搭配multiple属性一起使用的,用法:data-max-options=“2”,表示最多选两个。

5.data-selected-text-format

缩略模式,用法:data-selected-text-format="count > 3",当选中值大于3个的时候只显示选中项的个数,注意这个属性只对多选生效。

效果:

6.data-style

表示默认选中样式,这个我没试过,用法:data-style="btn-primary",属性值就是bootstrap的按钮样式。

7.data-size

data-size="6",表示下拉框显示的下拉列表数量。

8.data-dropup-auto=""

data-dropup-auto="false",表示下拉框默认向下展开;"true",表示下拉框默认向下展开;"auto",表示下拉框根据页面尺寸自动向下或向上展开,"auto"是data-dropup-auto的默认值。

9.其他用法

全选:$('.selectpicker').selectpicker('selectAll');

反选:$('.selectpicker').selectpicker('deselectAll');

适应手机模式:$('.selectpicker').selectpicker('mobile');

效果:

还有其他多种玩法,等以后有时间,并且自己玩过了再更(不过估计不得了)

以上图片来源:https://www.cnblogs.com/landeanfen/p/7457283.html

四,与AngularJs的搭配使用(脱坑必看)

1.脱坑第一步

因为angularjs的下拉框,几乎都不会显示的在html文件中写出<option value="1">XXX</option>

大多数情况下,都是采用的ng-options指令,循环出选项,并装填到<option value="">。。。</option>标签中。

此时再使用上诉的方式在页面显示的效果为:

即下拉框无法显示出选项,但实际上,按下F12去查看时,又明显的有这些选项值,只是页面无法展示。

脱坑方案第一步

在页面中添加Js:

$(function () {
   //此两句代码必不可少,一句都不能缺,先后顺序也不能换,这是血的教训啊。
    $('.selectpicker').selectpicker('refresh');
    $('.selectpicker').selectpicker('render');
});

但是这种做法,只有在编译之后第一次进入页面的时候生效,一旦刷新之后就失效了。具体原因,是涉及到了angularjs的异步加载的问题。

脱坑方案第二步

将上面的代码,放在下拉框遍历的集合之前执行,eg:

ng-options="item.branchCode as (item.branchCode+'-'+item.branchName) for item in branchList"

即,需要在branchList加载完成之前执行。此时就需要将$('.selectpicker').selectpicker('refresh'); $('.selectpicker').selectpicker('render');放到对应的Controller中,则能完美解决问题。

代码:

SysBranchService.getEffectDealerList().then(function (response) {
    $(function () {
        $('.selectpicker').selectpicker('refresh');
        $('.selectpicker').selectpicker('render');
    });
    $scope.branchList = response;
});

注:一定不能使用$object此种方法进行异步加载。即:$scope.branchList = SysBranchService.getEffectDealerList().$object;

then方法的加载机制是必须等待获取完所有返回值之后才会进行下一步操作,而$object是一边执行下面的操作,一边等待返回值。因此也会造成下拉框的选项时有时无。

2.脱坑第二步

警告:如果遇到表单验证required,ng-required,则required,ng-required将会失效!

因此若是需要表单验证的话,千万不要使用此种方式,需要另辟蹊径。

另外,若有朋友解决了这个问题,还请不吝赐教,在下先谢了。

3.脱坑第三步

在angularjs中,可能会遇到选择之后数据不能回显,但实际上数据是进入了数据库的。此时需要进行初始化赋值,即当页面需要的数据全部加载完之后,给下拉框赋初始值。

如下所示:

$(function () {

                           //从数据库查回来的值
                            var valArea='string:'+$scope.item.sysBranch.areaId;
                            var valPost='string:'+$scope.item.sysBranch.parentId;
                            var valBank='string:'+$scope.item.sysBranchDealer.bankId;

                    //给下拉框赋初始值   .selectpicker:eq(0)表示该页面或者该表单的第几个使用了第几个selectpicker属性的input标签
                            $('.selectpicker:eq(0)').selectpicker('val',valArea);
                            $('.selectpicker:eq(1)').selectpicker('val',valPost);
                            $('.selectpicker:eq(2)').selectpicker('val',valBank);
                            $('.selectpicker').selectpicker('refresh');
                            $('.selectpicker').selectpicker('render');
                        });

 

 

Bootstrap完美select标签下拉菜单实现 Bootstrap&amp;amp;amp;amp;amp;lt;select&amp;amp;amp;amp;amp;gt;下拉菜单实现 初级者使用bootstrap框架时,大部分对官方提供的下拉菜单dropdown组件不是很感冒! 所以,这里就提供简单原生下拉标签&amp;amp;amp;amp;amp;lt;select&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;lt;option&amp;amp;amp 阅读详情

相关推荐

angularjs下拉树控件

实现树的下拉效果,和ExtJs的treecombox大同小异。

bootstrap-select 滚轴_Bootstrap-select(selectpicker)的使用说明

1、首先引入selectpicker插件js,css由于:例子中用使用的是jquery语法和bootstrap前端框架,所以还要引入注意:jQuery.js引入时要在其他js文件之前,否则js中无法识别jQuery语法2、示例代码:@foreach (var item inViewBag.mechineNameLists){@item.HOUSENAME}View Code3、属性说明select...

weixin_39952502的博客 608

微带天线理论学习笔记(1)

微带天线的概念是由Deschamps于1953年提出来的,它是在一块厚度远小于工作波长的介质基片的一面敷以金属辐射片、一面全部敷以金属薄层作接地板而成。辐射片可以根据不同的要求设计成各种形状。微带天线具有质量轻、体积小和易于制造等优点,广泛应用于个人无线通信中。

qq_36521926的博客 6227

bootstrap-select采坑

bootstrap-select采坑 1.class="selectpicker" 普通的下拉框功能 2.title="请选择城市名称" title的作用与palcehoder一样。 3.select class="selectpicker" multiple selectpicker和multiple属性的搭配使用可实现多选 4.data-live-search="true" 这个属性的默认值是...

YUSIR 完美CODING世界 854

【LVGL】学习笔记--(3)界面切换以及显示优化

界面切换和帧率优化

sinat_33408502的博客 1万+

我花3年踩坑总结的C#上位机开发指南:从零基础到项目落地(附实战案例)

串口乱码:编码格式不匹配,一定要和设备端确认;PLC连接超时:检查IP地址和端口,确保上位机和PLC在同一网段;界面卡死:耗时操作没开线程,WinForm用BackgroundWorker,WPF用Task;数据解析错误:寄存器地址算错(Modbus地址从0还是1开始);Modbus数据丢包:加CRC校验,重要数据重发机制;WPF绑定不生效:忘记实现INotifyPropertyChanged;项目打包失败:缺少依赖DLL,用Dependency Walker检查;现场环境不兼容。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1842

bootstrap-select插件angularjs爬坑

一、前因 公司的项目早就上线了,现在正处于逐步的优化当中,其中有一个就是关于下拉框的优化。因为随着公司业务的开展,进驻的经销商已经有上百家了,而普通的下拉框对选取某一个经销商着实有一定的效率低下,因此需要优化。由于网上大多数都是JQuery与boorstrap-select的搭配应用,与angularjs之间的搭配较少,因此想着写一篇拙劣的指南,如有错误,还请不吝...

Shark_Laka的博客 1031

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)

本文深入解析了OpenCV图像去畸变的原理与实战技巧,详细对比了标准透视、鱼眼及全能型omnidir三种校正函数的核心参数调优方法。通过分析alpha、balance、centerX/Y及focalScale四大参数对输出效果的影响,并结合完整代码与效果对比图,帮助开发者精准校正镜头畸变,提升计算机视觉任务精度。

weixin_29046611的博客 341

UI Bootstrap(AngularJS + Bootstrap)tabs 组件实战指南:uib-tabset 与 uib-tab 完整配置与源码解析

本指南围绕 UI Bootstrap 项目中 `src/tabs` 模块的官方文档([src/tabs/docs/readme.md](https://link.gitcode.com/i/a66284c0817bdf7ec162bdb80c1ac8d2))展开,系统讲解 `uib-tabset` 与 `uib-tab` 两个核心指令的全部配置项、`uib-tab-heading` 富文本标题用法

gitblog_00977的博客 205

BLDC&PMSM电机控制器硬件设计工程(一)概述&需求&规划

这里是一个专注于电机控制器硬件工程的开放社区与知识仓库。我们的核心使命是分享、交流与共创,致力于解开无刷直流电机(BLDC)和永磁同步电机(PMSM)中、大功率控制器硬件设计,包括驱动IC选型,电流传感器选型,控制IC,母线电容计算,功率模块(IGBT、MOS管)选型以及大功率功率模块驱动电源设计。功率等级: 重点关注中等功率(如500W-10kW) 并向大功率(10kW以上) 延伸,探讨对应的功率器件(如MOSFET, IGBT, SiC)选型与驱动。

小幽余生不加糖 638

瑞芯微RK3588部署YOLOv8模型

写下这篇博客进行记录,以防后面忘了怎么部署。

weixin_45303602的博客 3661

BlurAdmin 实战指南:基于 AngularJS 与 Bootstrap 的可定制管理后台前端框架

BlurAdmin 是 Akveo 团队开源的 AngularJS + Bootstrap 管理后台前端框架,以“模糊(Blur)玻璃拟态”视觉风格为特色,内置丰富的图表、地图、表单、表格与 UI 组件。本篇基于仓库 README 与源码,完整梳理其特性矩阵、依赖体系、目录结构、Gulp 构建链路与本地运行方式,帮助你快速基于该项目搭建或定制一套可投入使用的后台管理界面。 ## 项目定位与核心特

gitblog_01154的博客 191

SAP 消息号T-CODE

SAP消息号修改汇总 确实有很多消息是可以修改的 FI: oBA5|oFMG|oFPM MM: oMRM|oKZZ|oMT4|oMCQ|o04C| SD: oVAH(V4)|oVM1(VL) CO:  oPR4_ACT|oPR4_CK|oPR4_CKML|oPR4_CKPF|oPR4_KKA|oPR4_KKP|oPR4_KKS| oPR4_KKS1|oPR4_P

heng0757的专栏 1万+

Angular Bootstrap Calendar在AngularJS项目中的集成方案:模块化架构设计 [特殊字符]️

Angular Bootstrap Calendar是一个功能强大的AngularJS日历组件,它完美结合了Bootstrap的优雅样式和AngularJS的数据驱动特性。这个模块化的日历解决方案为开发者提供了完整的日历功能,无需依赖jQuery,是现代AngularJS应用中管理时间表和事件的理想选择。 ## 为什么选择Angular Bootstrap Calendar? ✨ 在Angul

gitblog_00124的博客 534

PCL 逐点插入法构建Delaunay三角网(C++详细过程版)

点云构建Delaunay三角网的逐点插入法基于PCL点云库的C++详细过程版实现

点云侠的博客 2992

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

AngularStrap 2.3 实战指南:用 AngularJS 1.2+ 原生指令无缝集成 Bootstrap 3

> 本文以 [README.md](https://link.gitcode.com/i/263c31ff4c289a1707a26696994b2b86) 为核心骨架,结合仓库源码(`src/`、`tasks/`、`test/`、`gulpfile.js`)深入展开。AngularStrap 是一套专为 AngularJS 1.2+ 打造的 Bootstrap 3 原生指令集合,目标是让你在不依

gitblog_00070的博客 83

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Angularjs select下拉多选实现

因为项目的需求,要求使用下拉多选来实现多个分类,网上搜了很多,包括jquery的select2,以及http://dotansimha.github.io/angularjs-dropdown-multiselect/docs/#/main里面的Basic Settings Example,可能是不会使用的原因,对于静态的option我是可以使用的,但是对于Angular的$scope变量的lis...

qq_39671783的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

终极AngularJS下拉组件:ui-select完全指南 — 如何优雅实现Select2与Selectize功能

ui-select是AngularJS生态中一款强大的原生下拉选择组件,它完美复刻了Select2和Selectize的核心功能,同时保持了AngularJS的原生特性与性能优势。本文将为你详细介绍这款组件的安装配置、核心功能及实战应用,帮助你快速掌握在AngularJS项目中实现高级下拉选择功能的最佳实践。 ## 🚀 为什么选择ui-select?三大核心优势解析 在AngularJS项目

gitblog_00411的博客 509

UI Bootstrap 版本演进全解:AngularJS Bootstrap 指令库 CHANGELOG(0.1.0 → 2.5.0)深度研读

本篇技术指南以本仓库根目录下的 [CHANGELOG.md](https://link.gitcode.com/i/740468b8ff5ae5c9ac9f4ba1da617437) 为主线,系统梳理 angular-ui-bootstrap(为 Bootstrap 提供原生 AngularJS 指令的 UI 库)自 2013 年 0.1.0 首发到 2017 年 2.5.0 全部 40+ 个版本

gitblog_00233的博客 626

ui-select开发实战:如何为你的AngularJS项目构建自定义下拉组件

ui-select是一款基于AngularJS的下拉选择组件,它提供了类似Select2和Selectize的功能,让开发者能够轻松实现美观且功能丰富的下拉选择体验。无论是简单的单选、多选,还是带有搜索、分组等高级功能的下拉菜单,ui-select都能满足你的需求。 ## 为什么选择ui-select? 在AngularJS项目中,原生的select元素功能有限,难以满足现代Web应用对用户体

gitblog_01169的博客 411

AngularJS初始化Select选择框

一、引入   之前一个离职的同事负责的项目大量的引入了AngularJS的JS框架,后来我接手相关他项目里的功能。由于对AngularJS不是太熟,在他的功能上进行二次开发就比较费劲了,印象比较深的一个就是如何创建并初始化一个Select选择框。最近我又研究了一下AngularJS,研究出一个个人觉得比较好的初始化Select选择框的方法。 二、代码 <!DOCTYP...

dibx85335的博客 173

终极Angular-Strap选择器教程:打造高效Select指令的完整指南

Angular-Strap是一个为AngularJS 1.2+设计的原生指令库,专门用于Bootstrap 3,其中Select指令提供了强大的下拉选择功能。本文将深入探讨如何配置和优化Select组件,帮助开发者快速实现美观且功能丰富的选择器。 [![AngularStrap项目封面](https://raw.gitcode.com/gh_mirrors/an/angular-strap/ra

gitblog_00159的博客 1095

AngularUI Bootstrap Typeahead 指令完全指南:语法、配置与异步匹配实战

Typeahead(自动补全)是 AngularUI Bootstrap 项目对 Bootstrap v2 同名插件的 AngularJS 原生重实现,它以极小的体积和零 jQuery 依赖,为任意表单文本输入框快速构建优雅的自动补全体验。本文以仓库内的 [typeahead 文档](https://link.gitcode.com/i/d084e85f659cf27432d2e190ab8d62

gitblog_00033的博客 372

bootstrap select二级联动

js版本 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" /> <link href="bootstrap-select/css/bootstrap-select.min.css" re

czh4869623的专栏 1808

Angular Bootstrap Calendar与其他日历库对比分析:为什么选择这个无jQuery解决方案

在选择AngularJS项目中的日历组件时,开发者常常面临众多选择。今天,我们将深入分析**Angular Bootstrap Calendar**这个独特的无jQuery解决方案,并与其他主流日历库进行全面对比。作为一个基于Bootstrap样式、完全依赖AngularJS的日历组件,它提供了轻量级、高性能的日历体验,特别适合追求简洁架构的现代Web应用。 ## 📊 主流Angular日历组

gitblog_00970的博客 301

推荐开源项目:oi.select——AngularJS的智能下拉选择指令库

推荐开源项目:oi.select——AngularJS的智能下拉选择指令库 在Web开发中,下拉选择框是最常见的组件之一,而 oi.select 是一个为AngularJS精心打造的高效、灵活且强大的下拉选择指令库。它不仅提供了多选功能,还兼容AngularJS的原生select,并且不依赖jQuery等其他库,使得你的应用更加轻量级。 项目简介 oi.select 支持多种特性,包括但不限于: ...

gitblog_00024的博客 539
下一篇: 《Java编程思想第四版》读后感——Java中的finalize() 与c++的析构函数的区别
Ai_Ying_Java
博客等级 码龄9年 30粉丝 47原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值