landers.angular
Version:
landers.angular
72 lines (71 loc) • 2.87 kB
JavaScript
;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);
}
}
};
}]);