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 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
ExtJS4 表格的嵌套 rowExpander应用
May 02 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
Vue Ajax跨域请求实例详解
Jun 20 Javascript
vue页面使用阿里oss上传功能的实例(一)
Aug 09 Javascript
JavaScript代码执行的先后顺序问题
Oct 29 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
解决layui checkbox 提交多个值的问题
Sep 02 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
JS浏览器BOM常见操作实例详解
Apr 27 Javascript
js实现三角形粒子运动
Sep 22 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
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
php实现文件下载实例分享
2014/06/02 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
pytorch 求网络模型参数实例
2019/12/30 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
Django自带的用户验证系统实现
2020/12/18 Python
在线服装零售商:SheIn
2016/07/22 全球购物
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
大学生饮食连锁店创业计划书
2014/01/17 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
民族团结先进个人材料
2014/02/05 职场文书
如何写辞职信
2015/05/13 职场文书
导游词之西递宏村
2019/12/10 职场文书