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 相关文章推荐
jQuery 学习6 操纵元素显示效果的函数
Feb 07 Javascript
javascript基础之查找元素的详细介绍(访问节点)
Jul 05 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
node+experss实现爬取电影天堂爬虫
Nov 20 Javascript
BootStrap TreeView使用实例详解
Nov 01 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
vue2过滤器模糊查询方法
Sep 16 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
JS实现图片切换特效
Dec 23 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
多重?l件?合查?(二)
2006/10/09 PHP
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
微信小程序实现留言板(Storage)
2018/11/02 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
python实现随机加减法生成器
2020/02/24 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
设计师大码女装:11 Honoré
2020/05/03 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
内勤主管岗位职责
2014/04/03 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
校庆团日活动总结
2014/08/28 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书