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兼容标准的表格变色效果
Jun 28 Javascript
avalon js实现仿微博拖动图片排序
Aug 14 Javascript
正则表达式(语法篇推荐)
Jun 24 Javascript
json对象与数组以及转换成js对象的简单实现方法
Jun 24 Javascript
原生JS实现网络彩票投注效果
Sep 25 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 Javascript
JavaScript中EventBus实现对象之间通信
Oct 18 Javascript
关于vue-router-link选择样式设置
Apr 30 Vue.js
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将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
中国央视网签名寄语
2014/01/18 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
银行稽核岗位职责
2015/04/13 职场文书
收入证明怎么写
2015/06/12 职场文书
初一英语教学反思
2016/02/15 职场文书
调研报告的主要写法
2019/04/18 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL