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 04 Javascript
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
Dec 06 Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 Javascript
js实现淡入淡出轮播切换功能
Jan 13 Javascript
AngularJS自定义指令实现面包屑功能完整实例
May 17 Javascript
浅谈webpack对样式的处理
Jan 05 Javascript
jquery动态添加带有样式的HTML标签元素方法
Feb 24 jQuery
JS求1到任意数之间的所有质数的方法详解
May 20 Javascript
JavaScript console的使用方法实例分析
Apr 28 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 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 mssql 时间格式问题
2009/01/13 PHP
php表单提交问题的解决方法
2011/04/12 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
用python批量下载apk
2020/12/29 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
无罪辩护词范文
2015/05/21 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python