Angularjs material 实现搜索框功能


Posted in Javascript onMarch 08, 2016

angular-material 是 AngularJS 的一个子项目,用来提供实现了 Material Design 风格的组件。

Material 提供了大量的android 风格的UI组件,使用 angularjs + Material 可以很容易开发出风格接近原生 Android 5.x 的web界面。但在实际使用的过程中并不总是能满足我们的需求。开发一个组件就成了我们必须学习的内容。

下面是一个组件的实现:

//前面省略若干代码 
directive('mdSearchInput',[function(){ 
return{ 
restrict:'E', 
controller:['$scope','$timeout',function($scope,$timeout){ 
var tsk=null; 
$scope.delay=1000; 
$scope.on_changed=function(){ 
if(null !== tsk) {$timeout.cancel(tsk);} //去掉前一个任务 
tsk = $timeout(function(){ 
$timeout.cancel(tsk);tsk=null; 
$scope.onSearch()($scope.searchText); 
},$scope.delay); 
};$scope.on_clear=function(){ 
var tsk=null;$scope.searchText=''; 
tsk=$timeout(function(){ 
$timeout.cancel(tsk);tsk=null; 
$scope.onSearch()($scope.searchText); 
},100); 
} 
}], 
scope:{ 
inputName: '@mdInputName', 
searchText: '=?mdSearchText', 
onSearch: '&?mdSearch', 
placeholder: '@placeholder', 
delay: '@delay' 
}, 
template:'<div class="md-search-input" layout="row">\ 
<input type="text" flex autocomplete="off" ng-model="searchText" name="{{inputName}}" placeholder="{{placeholder}}" ng-change="on_changed()" />\ 
<md-button class="md-fab" ng-click="on_clear()" ng-show="searchText!==\'\'"><md-icon md-svg-icon="md-close" style="color:rgba(0,0,0,0.5);"></md-icon></md-button>\ 
</div>', 
link:function($scope, $element){ 
} 
}; 
}]);

CSS 样式:

.md-search-input{ 
box-sizing: border-box;border: none;box-shadow: none;background: 0 0; border-radius:5px;background: #FFF;margin:0px;position: relative; 
input{outline: 0;font-size: 14px; width: 100%; padding: 0 15px; line-height: 40px;height: 40px;border: none;background:transparent;} 
button,.md-fab,.md-button,button:hover,.md-fab:hover { 
background:transparent !important; 
line-height:40px;height:40px;width:40px;font-size:14px;box-shadow:none !important;margin:0px;padding:0px; 
color:rgba(0,0,0,0.5) !important; 
} 
}

配合 ng-route 可以很容易实现无刷新的APP 让您的web页面更加接近app体验,
在 maincontroll中,通过监听 ng-route 的页面即将跳转事件 来重置消息框,

//在页面改变之前,重置搜索框. 
$scope.$on('SearchText.Reset',function(){ $scope.searchConfig={show:false, key:'',delay:1200};}); 
$rootScope.$on('$routeChangeStart', function (event, next) { 
$rootScope.$broadcast('SearchText.Reset'); 
});

而在需要用到搜索功能的地方,则只需要在控制器里通过如下代码实现:

//陪值搜索框为己用 
$scope.$emit('Search.Config',{ 
show:true, key:'',delay:800, 
emptyText:"请输入:商家名称,账号,电话 等内容以进行搜索.", 
onSearch: function(){ 
return function(v){ 
$scope.merData.query(v); //调用本控制器的数据查询接口. 
} 
} 
});

以上所述是小编给大家介绍的Angularjs material 实现搜索框功能,希望对大家有所帮助!

Javascript 相关文章推荐
js 浮动层菜单收藏
Jan 16 Javascript
JavaScript编程中容易出BUG的几点小知识
Jan 31 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
JavaScript实现图片切换效果
Aug 12 Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 Javascript
详解node字体压缩插件font-spider的用法
Sep 28 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
通过js示例讲解时间复杂度与空间复杂度
Aug 06 Javascript
VUE渲染后端返回含有script标签的html字符串示例
Oct 28 Javascript
vue 实现cli3.0中使用proxy进行代理转发
Oct 30 Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 #Javascript
三种Node.js写文件的方式
Mar 08 #Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 #Javascript
理解javascript正则表达式
Mar 08 #Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 #Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 #Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
Mar 07 #Javascript
You might like
php中socket通信机制实例详解
2015/01/03 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python中的列表推导浅析
2014/04/26 Python
Python实现堆排序的方法详解
2016/05/03 Python
详解Python中类的定义与使用
2017/04/11 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
Python jieba库用法及实例解析
2019/11/04 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
军训生自我鉴定范文
2013/12/27 职场文书
室内设计专业自荐信
2014/05/31 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
React自定义hook的方法
2022/06/25 Javascript