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去除空格的几种方法
Oct 03 Javascript
Javascript 类与静态类的实现(续)
Apr 02 Javascript
使用jquery清空、复位整个输入域
Apr 02 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
BooStrap对导航条的改造实践小结
Sep 21 Javascript
js实现简单的选项卡效果
Feb 23 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
Oct 14 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
Jun 01 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 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 at(@)符号的用法简介
2009/07/11 PHP
PHP中的替代语法介绍
2015/01/09 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
php 浮点数比较方法详解
2017/05/05 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
python 多进程通信模块的简单实现
2014/02/20 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
报到证丢失证明
2014/01/11 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
考研英语复习计划
2015/01/19 职场文书
实习生个人总结范文
2015/02/28 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书