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实现计算代码行数的简单方法附代码
Aug 13 Javascript
JQuery对checkbox操作 (循环获取)
May 20 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
Mar 01 Javascript
JavaScript面对国际化编程时的一些建议
Jun 24 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
react中使用swiper的具体方法
May 15 Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 Javascript
改变layer confirm弹窗按钮的颜色方法
Sep 12 Javascript
JS图片预加载三种实现方法解析
May 08 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+mysql保存和输出文件
2006/10/09 PHP
我的论坛源代码(四)
2006/10/09 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
一个简单的php路由类
2016/05/29 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python重新加载模块的实现方法
2018/10/16 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
Python datetime 如何处理时区信息
2020/09/02 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
金融专业个人求职信
2013/09/22 职场文书
艺术系应届生的自我评价
2013/10/19 职场文书
教师求职推荐信范文
2013/11/20 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python