UNPKG

landers.angular

Version:

landers.angular

72 lines (71 loc) 2.87 kB
;angular.module('Landers.angular') .factory('Helpers', ['Flat', '$timeout', function(Flat, $timeout){ var cache = {}; return { seekScope : function(scope, parentId) { var myScope = scope; if ( !parentId) return myScope; while (myScope.$id != parentId) { if (myScope.$parent) { myScope = myScope.$parent; } else { break; } } return myScope; }, toJqEle : function($event) { if (!$event) return $(); var obj = angular.isElement($event) ? $event : $event.target; return angular.element(obj); }, disable : function($event){ $event = this.toJqEle($event); return $event.attr('disabled', true) .prop('disabled', true) .addClass('disabled'); }, enable : function($event) { $event = this.toJqEle($event); return $event.attr('disabled', false) .prop('disabled', false) .removeClass('disabled'); }, domainUrl : function(domainUrl, url) { if (!domainUrl) return url; var len = domainUrl.length; var pre = url.slice(0,len - url.slice(0, len).replace(/[\x00-\xff]/g,"").length); if (pre === domainUrl) return url; else return domainUrl + url; }, timeouts: function(callbacks, delay){ (function(i){ var callback = callbacks[i]; var self = arguments.callee; $timeout(function(){ callback && callback(); self(++i); }, delay); })(0); }, attrItemToJson: function(attr, key) { var ret = attr[key] || {}; return angular.isString(ret) ? angular.fromJson(ret.replace(/(')+/gm, '"')) : ret; }, $on: { once: function(scope, event, callback) { var key = [scope.id, event].join('.'); if (!Flat.get(cache, key)) { Flat.set(cache, key, scope.$on(event, callback)); } return this; }, deregister: function(scope, event){ var key = [scope.id, event].join('.'); var fun = Flat.get(cache, key); fun && fun(); Flat.set(cache, key, null); } } }; }]);