Angular 常用指令
已经用了angular很久积累了一些很实用的指令,需要的话直接拿走用,有问题大家一起交流
1.focus时,input:text内容全选
angular.module('my.directives').directive('autoselect', [function () { return { restrict: 'A', link: function (scope, element, attr) { if (element.is("input") && attr.type === "text") { var selected = false; var time = parseInt(attr["autoselect"]); element.bind("mouseup", function (e) { if (selected) { e.preventDefault(); e.stopPropagation(); } selected = false; }); if (time > 0) { element.bind("focus", function (event) { setTimeout(function () { selected = true; event.target.select(); }, time); }); } else { element.bind("focus", function (event) { selected = true; event.target.select(); }); } } } }; }]);
2.clickOutside指令,外部点击时触发,click-outside="func()" func为自己指定的方法,一般为关闭当前层的方法,inside-id="" 点击指定id的输入框时,当前层不关闭
angular.module('my.directives').directive('clickOutside', ['$document', function ($document) { return { restrict: 'A', link: function (scope, element, attrs) { $(element).bind('mousedown', function (e) { e.preventDefault(); e.stopPropagation(); }); $("#" + attrs["insideId"]).bind('mousedown', function (e) { e.stopPropagation(); }); $("#" + attrs["insideId"]).bind('blur', function (e) { setTimeout(function () { scope.$apply(attrs.clickOutside); }); }); $document.bind('mousedown', function () { scope.$apply(attrs.clickOutside); }); } }; }]);
3.clickInside指令,内部点击时触发
angular.module('my.directives').directive('clickInside', ['$document', function ($document) { return { restrict: 'A', link: function (scope, element, attrs, ctrl) { $(element).bind('focus click', function (e) { scope.$apply(attrs.clickInside); e.stopPropagation(); }); } }; }]);
4.scrollInside 指令 ,内部滚动时触发
angular.module('my.directives').directive('scrollInside', function () { return { restrict: 'A', link: function (scope, element, attrs, ctrl) { $(element).bind('scroll', function (e) { scope.$apply(attrs.scrollInside); e.stopPropagation(); }); } }; });
5. bindKeyBoardEvent指令,内部获得焦点或者点击时触发
angular.module('my.directives').directive('bindKeyBoardEvent', function () { return { restrict: 'A', link: function (scope, element, attrs, ctrl) { $(element).bind('focus click', function (e) { scope.$apply(attrs.bindKeyBoardEvent); e.stopPropagation(); }); } }; });
6. myDraggable 使元素可拖动
angular.module('my.directives').directive('myDraggable', ['$parse', function ($parse) { return { restrict: 'A', link: function (scope, element, attr) { if (attr["modal"] !== undefined) { scope.$watch(attr["modal"], function (newValue) { if (newValue) { setTimeout(function () { $(".modal").draggable({handle: ".modal-header"}); }, 100); } else { $(".modal").attr("style", ""); } }, true); $(window).resize(function () { $(".modal").attr("style", ""); }); } else { element.draggable($parse(attr["hrDraggable"])(scope)); } } }; }]);
6.myResizable 使元素可拖拽改变尺寸大小
angular.module('my.directives').directive('myResizable', ['$parse', function ($parse) { return { restrict: 'A', link: function (scope, element, attr) { if (attr["modal"] !== undefined) { scope.$watch(attr["modal"], function (newValue) { if (newValue) { setTimeout(function () { $(".modal").resizable({handles: "e, w"}); }, 100); } }, true); } else { element.resizable($parse(attr["hrResizable"])(scope)); } } }; }]);
6. conditionFocus 作为一个元素的属性存在:如果监听的表达式值为true,则将焦点放到本元素上。
angular.module('my.directives').directive("conditionFocus", [function () { return function (scope, element, attrs) { var dereg = scope.$watch(attrs.conditionFocus, function (newValue) { if (newValue) { element.focus(); } }); element.bind("$destroy", function () { if (dereg) { dereg(); } }); }; }]);
7.scrollToHide 滚动到顶部的时候触发
angular.module('my.directives').directive("scrollToHide", [function () { return function (scope, element, attrs) { var height= parseFloat(attrs.maxHeight) $(window).scroll(function(){ var scrollTop= document.body.scrollTop||document.documentElement.scrollTop; if(scrollTop>height){ $parse(attrs.ngShow).assign(scope, false); }else{ $parse(attrs.ngShow).assign(scope, true); } }) }; }]);
8.resetToZero 作为一个元素的属性存在:如果监听的表达式值为true,则将本元素中所绑定的ngModel值设为0
angular.module('my.directives').directive("resetToZero", ["$parse", function ($parse) { return function (scope, element, attrs) { var dereg = scope.$watch(attrs.resetToZero, function (newValue) { if (newValue) { if (attrs.ngModel) { $parse(attrs.ngModel).assign(scope, 0); } } }); element.bind("$destroy", function () { if (dereg) { dereg(); } }); }; }]);
9.resetToEmptyString 作为一个元素的属性存在:如果监听的表达式值为true,则将本元素中所绑定的ngModel值设为空字符串。
angular.module('my.directives').directive("resetToEmptyString", ["$parse", function ($parse) { return function (scope, element, attrs) { var dereg = scope.$watch(attrs.resetToEmptyString, function (newValue) { if (newValue) { if (attrs.ngModel) { var _getter = $parse(attrs.ngModel); if (_getter(scope)) { _getter.assign(scope, ""); } else { _getter.assign(scope.$parent, ""); } } } }); element.bind("$destroy", function () { if (dereg) { dereg(); } }); }; }]);
10. numberOnly 输入框内容仅限数值的指令(输入内容不允许为 负值),可以设定最大值(max属性)
angular.module('my.directives').directive("numberOnly", ["$parse", function ($parse) { return function (scope, element, attrs) { element.bind("keyup", function () { if(event.keyCode==37||event.keyCode== 39){ return false; } var val = element.val().replace(/[^\d.]/g, ''); if(attrs.max){ if(val>parseInt(attrs.max)){ val=attrs.max; } } element.val(val); if (attrs.ngModel) { $parse(attrs.ngModel).assign(scope, val); } return false; }); element.bind("afterpaste", function () { var val = element.val().replace(/[^\d.]/g, ''); if(attrs.max){ if(val>parseInt(attrs.max)){ val=attrs.max; } } element.val(val); if (attrs.ngModel) { $parse(attrs.ngModel).assign(scope, val); } return false; }); }; }]);
11. upperCaseOnly 输入框自动转换成大写
angular.module('my.directives').directive("upperCaseOnly", ["$parse", function ($parse) { return function (scope, element, attrs) { element.bind("keyup", function () { var val = element.val().toUpperCase(); element.val(val); if (attrs.ngModel) { $parse(attrs.ngModel).assign(scope, val); } return false; }); element.bind("afterpaste", function () { var val =element.val().toUpperCase(); element.val(val); if (attrs.ngModel) { $parse(attrs.ngModel).assign(scope, val); } return false; }); }; }]);
12. noSpecialString 输入框内容不能为特殊字符
angular.module('my.directives').directive("noSpecialString", ["$parse", function ($parse) { return function (scope, element, attrs) { element.bind("keyup", function () { var val = element.val().replace(/[\W]/g, ''); element.val(val); if (attrs.ngModel) { $parse(attrs.ngModel).assign(scope, val); } return false; }); element.bind("afterpaste", function () { var val = element.val().replace(/[^\d]/g, ''); element.val(val); if (attrs.ngModel) { $parse(attrs.ngModel).assign(scope, val); } return false; }); }; }]);
13. round2bit 输入框失去焦点 保留两位小数
angular.module('my.directives').directive("round2bit", ['$parse', '$filter', function ($parse, $filter) { return function ($scope, element, attrs) { element.blur(function () { if (attrs.ngModel) { var _getter = $parse(attrs.ngModel); var _numberStr2Round = (_getter($scope) || 0); _getter.assign($scope, $filter('number')(_numberStr2Round, 2).split(",").join("")); $scope.$apply(); } }); }; }]);
14.SelfHeight dom编译期设置元素高度,可以接受数字或者表达式
angular.module('hr.directives').directive('SelfHeight', ['$timeout', function ($timeout) { function _resizeElement(element, SelfHeight) { element.height((typeof SelfHeight === "number") ? SelfHeight : eval(SelfHeight)); }; return { priority: 1000, link: function (scope, element, attrs) { var hrSelfHeight = attrs["SelfHeight"]; var on = attrs["on"]; if (on) { $(window).resize(function () { _resizeElement(element, scope.$eval(SelfHeight)); }); scope.$watch(on, function () { $timeout(function () { _resizeElement(element, scope.$eval(SelfHeight)); }, 100); }, true); } else { $(window).resize(function () { _resizeElement(element, SelfHeight); }); _resizeElement(element, SelfHeight); } } }; }]);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
常用命令总结 help 默认列出所有命令文档,后面加命令名将介绍该命令用法 dump 打印节点信息 gterm 给定节点上开启 gnome-terminal。注:可能导致 Mininet 崩溃 xterm 给定节点上开启 xterm intfs 列出所有的网络接口 iperf 两个节点之间进行简单的 iperf TCP测试 iperfudp 两个节点之间用指定带宽 udp 进行测试 net 显示网
本文向大家介绍Angular 2 结构指令,包括了Angular 2 结构指令的使用技巧和注意事项,需要的朋友参考一下 示例
本文向大家介绍MongoDB 常用命令总结,包括了MongoDB 常用命令总结的使用技巧和注意事项,需要的朋友参考一下 简单的的增删改查数据 在查询结果中指定显示或者不显示某个字段 例如,我们希望在 lessons 集合中查找所有数据,但是不希望在返回结果中包含 slides 字段;因为 slides 是一个巨长的以 base64 表示的图片数组,影响查询结果的阅读。 那么我们就可以在 query
主要内容:1.kubectl语法,2.kubectl 子命令,3.kubectl参数列表,4.Kubectl 输出格式,5.kubectl操作示例1.kubectl语法 kubectl [command] [Type] [NAME] [flags] command: 子命令,用于操作kubernetes集群资源对象的命令,例如:create, delete, describe, get, apply等等 TYPE: 资源对象的类型,区分大小写,能以单数,复数或者简写形式表示。例如以下3中TYPE
本文向大家介绍Android编程常用技巧实例总结,包括了Android编程常用技巧实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程常用技巧。分享给大家供大家参考,具体如下: 1. 登录的时候,如果输入有误,则输入框左右震动,表示输入有误 在res下准备一个anim文件夹,里面包含两个文件,main_login_shake.xml 和 main_login_cycl
本文向大家介绍PHP 扩展Memcached命令用法实例总结,包括了PHP 扩展Memcached命令用法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP 扩展Memcached命令用法。分享给大家供大家参考,具体如下: 传送门:http://www.php.net/manual/zh/book.memcached.php windows 下没有memcached的扩展,只有