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 相关文章推荐
javascript html 静态页面传参数
Apr 10 Javascript
JQuery实现倒计时按钮的实现代码
Mar 23 Javascript
Extjs NumberField后面加单位实现思路
Jul 30 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
关闭ie窗口清除Session的解决方法
Jan 10 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
canvas学习之API整理笔记(一)
Dec 29 Javascript
基于vue的fullpage.js单页滚动插件
Mar 20 Javascript
bootstrap警告框示例代码分享
May 17 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
Apr 10 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
javascript 函数使用说明
2010/04/07 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
Python中用Spark模块的使用教程
2015/04/13 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
python线程池threadpool实现篇
2018/04/27 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
会计专业应届生求职信
2013/11/24 职场文书
校友会欢迎辞
2014/01/13 职场文书
《穷人》教学反思
2014/04/08 职场文书
入党推优材料
2014/06/02 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
政风行风整改方案
2014/10/25 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书