backman
Version:
基于Angluar与bootstrap进行后台管理系统快速搭建的前端框架
3 lines (2 loc) • 22.3 kB
JavaScript
var backman=angular.module("backman",["ui.router"]);backman.config(function($httpProvider,$urlRouterProvider,$controllerProvider,$compileProvider,$filterProvider,$provide){"use strict";$httpProvider.defaults.headers.put["Content-Type"]="application/x-www-form-urlencoded",$httpProvider.defaults.headers.post["Content-Type"]="application/x-www-form-urlencoded",$httpProvider.defaults.headers.post["X-Requested-With"]="XMLHttpRequest",$httpProvider.defaults.headers.get={"X-Requested-With":"XMLHttpRequest"},$httpProvider.defaults.transformRequest=[function(data){var param=function(obj){var name,value,fullSubName,subName,subValue,innerObj,i,query="";for(name in obj)if(obj.hasOwnProperty(name))if((value=obj[name])instanceof Array)for(i=0;i<value.length;++i)subValue=value[i],fullSubName=name+"["+i+"]",innerObj={},innerObj[fullSubName]=subValue,query+=param(innerObj)+"&";else if(value instanceof Object)for(subName in value)value.hasOwnProperty(subName)&&(subValue=value[subName],fullSubName=name+"."+subName,innerObj={},innerObj[fullSubName]=subValue,query+=param(innerObj)+"&");else void 0!==value&&null!==value&&(query+=encodeURIComponent(name)+"="+encodeURIComponent(value)+"&");return query.length?query.substr(0,query.length-1):query};return angular.isObject(data)&&"[object File]"!==String(data)?param(data):data}],$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|sms|javascript):/)}),backman.run(function($rootScope,$state,$stateParams){"use strict";$rootScope.$state=$state,$rootScope.$stateParams=$stateParams}),backman.module=function(name,dependences){"use strict";var app=angular.module(name,["backman"].concat(dependences));return app.config(function($controllerProvider,$compileProvider,$filterProvider,$provide){app.register={controller:$controllerProvider.register,directive:$compileProvider.directive,filter:$filterProvider.register,factory:$provide.factory,service:$provide.service}}),app},backman.factory("_chinaAddress",function($http,$q,_tools,_setting){"use strict";localStorage.removeItem("AREA_TREE");var tree=null,deferred2=$q.defer(),tempTree=localStorage.getItem("AREA_TREE20170324");return tempTree=tempTree?JSON.parse(tempTree):[],tempTree&&tempTree.length?(tree=tempTree,deferred2.resolve(tree)):$http.get("../_data/region.json").then(function(data){if(10200==data.data.state.code){tree=[];for(var list=_tools.transKeyName("camel",data.data.data),i=0;i<list.length;i++)if(""==list[i].parentId||"0"==list[i].parentId)list[i].children=[],tree.push(list[i]);else for(var j=0;j<tree.length;j++){if(tree[j].regionId==list[i].parentId){list[i].children=[],tree[j].children.push(list[i]);break}for(var k=0;k<tree[j].children.length;k++)if(tree[j].children[k].regionId==list[i].parentId){tree[j].children[k].children.push(list[i]);break}}}else tree=[];localStorage.setItem("AREA_TREE20170324",JSON.stringify(tree)),deferred2.resolve(tree)},function(err){tree=[],deferred2.resolve(tree)}),{getTree:function(){if(tree){var deferred=$q.defer();return deferred.resolve(tree),deferred.promise}return deferred2.promise},getProvinces:function(){return this.getTree()},getCities:function(provinceId){return this.getProvinces().then(function(data){for(var i=0;i<data.length;i++)if(data[i].regionId==provinceId)return data[i].children})},getDistricts:function(provinceId,cityId){return this.getCities(provinceId).then(function(data){for(var i=0;i<data.length;i++)if(data[i].regionId==cityId)return data[i].children})},getRegionIdData:function(arr,regionId){var result="";if(arr)for(var i=0,len=arr.length;i<len;i++)if(arr[i].regionId==regionId){result=arr[i].regionName;break}return result}}}),backman.factory("_responePreHandler",function(_tools,_setting){"use strict";return{success:function(success,config){if(20001==success.data.state.code)return config&&1==config.noVerify?null:(layer.alert("您的登录已失效,即将跳转登录页...",{icon:0,title:!1,closeBtn:0},function(){}),setTimeout(function(){window.location.href=_setting.get("loginUrl")},3e3),null);if(10200==success.data.state.code){var data=success.data.data?_tools.transKeyName("camel",success.data.data):{};return data.__state=_tools.transKeyName("camel",success.data.state),data}if(10205==success.data.state.code)return{__state:_tools.transKeyName("camel",success.data.state)};var str="错误:code "+success.data.state.code+"<br>"+(success.data.state&&success.data.state.msg);return layer.alert(str,{icon:2,title:"通讯内容有误!"}),null},error:function(err){return layer.alert("错误:status "+err.status+" "+err.statusText,{icon:2,title:"建立通讯失败!"}),null}}}),backman.factory("_httpPost",function($http,_tools,_responePreHandler,_setting){"use strict";return function(url,postData,config){return config&&config.globAjaxParams||angular.extend(postData,_setting.globAjaxParams),postData=_tools.transKeyName("underline",postData),$http({method:"POST",url:url,data:postData}).then(function(success){return _responePreHandler.success(success,config)},function(err){return _responePreHandler.error(err)})}}),backman.factory("_httpGet",function($http,_tools,_responePreHandler,_setting){"use strict";return function(url,getData,config){return config&&config.globAjaxParams||angular.extend(getData,_setting.globAjaxParams),getData=_tools.transKeyName("underline",getData),$http({method:"GET",url:url,params:getData}).then(function(success){return _responePreHandler.success(success,config)},function(err){return _responePreHandler.error(err)})}}),backman.factory("_setting",function($rootScope){"use strict";var _data={base:location.protocol+"//"+location.host,path:"/"+location.pathname.split("/index.html")[0],globAjaxParams:{}};return _data.path="/"==_data.path?"":_data.path,_data.navListUrl=_data.base+_data.path+"/_data/navList.json",_data.loginUrl=_data.base+_data.path+"/login.html",_data.logoutUrl=_data.base+_data.path+"",_data.globUploadImg={url:"/api/upload-base64-image",fileKeyName:"base64File",parameters:{}},_data.userInforUrl="/reseller-admin/user/user-info",_data.kindUploadImgUrl="/api/upload-image",{get:function(key){return _data[key]},set:function(key,val){"globAjaxParams"==key?"object"==$.type(val)&&angular.extend(_data.globAjaxParams,val):"globUploadImg"==key?"object"==$.type(val)&&angular.extend(_data.globUploadImg,val):_data[key]=val}}}),backman.constant("_tools",function(){"use strict";var urlData=null,getUrlParam=function(name){if(!urlData){var url=window.location.href;urlData={};var arr=url.split("?");if(arr.length>1){arr=arr[1].split("&");for(var i=0,l=arr.length;i<l;i++){var a=arr[i].split("=");urlData[a[0]]=a[1]}urlData=transKeyName("camel",urlData)}}return urlData[name]},transKeyName=function(type,json){var toCamel=function(str){var str2="";if(str.indexOf("_")<0)str2=str;else{for(var words=str.split("_"),i=1;i<words.length;i++)words[i]=words[i].substr(0,1).toUpperCase()+words[i].substr(1);str2=words.join("")}return str2},toUnderline=function(str){return/[A-Z]/.test(str)?str.replace(/([A-Z])/g,function($1){return"_"+$1.toLowerCase()}):str},transform=function(json,json2){for(var p in json)if(json.hasOwnProperty(p)){var key;/^\d+$/.test(p)?key=parseInt(p):"camel"==type?key=toCamel(p):"underline"==type&&(key=toUnderline(p)),json[p]instanceof Object?json2[key]=transform(json[p],"array"==$.type(json[p])?[]:{}):"string"==$.type(json[p])&&/^[\{\[]+("([a-zA-Z][a-zA-Z0-9\-_]*?)"\:(.+?))+[\}\]]+$/.test(json[p])?(json2[key]=JSON.parse(json[p]),json2[key]=transform(json2[key],"array"==$.type(json2[key])?[]:{}),json2[key]=JSON.stringify(json2[key])):json2[key]=json[p]}return json2};return transform(json,"array"==$.type(json)?[]:{})};return{getUrlParam:getUrlParam,transKeyName:transKeyName,loadJs:function(jsList){return function($q,$rootScope){var deferred=$q.defer();return $script(jsList,function(){$rootScope.$apply(function(){deferred.resolve()})}),deferred.promise}}}}()),backman.factory("_validate",function(){"use strict";return{isMobile:function(val){return/^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$/i.test($.trim(val))},isRequired:function(val){return!!$.trim(val)},isMatchLength:function(val,len){return $.trim(val).length==len},isLengthInRange:function(val,arr){var len=$.trim(val).length;return len>=arr[0]&&len<=arr[1]},isInRange:function(val,arr){return val>=arr[0]&&val<=arr[1]},isIdCard:function(val){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/.test($.trim(val))},isTheSame:function(val1,val2){return val1==val2},isCorrectPassword:function(val){return/^(?!\d+$)(?![a-z]+$).+$/i.test($.trim(val))}}}),backman.controller("backmanFramework",function($scope,_setting,_httpGet){"use strict";$scope.sidebarOpen=!1,$scope.act={toggleSidebar:function(){$scope.sidebarOpen=!$scope.sidebarOpen}},_httpGet(_setting.get("userInforUrl"),{})}),backman.controller("backmanNavigation",function($scope,_setting,_httpGet){"use strict";var renderNavigation=function(data){data=data.sort(sortNavigation);for(var item,i=0;item=data[i];i++)item.children&&item.children.length&&item.children.sort(sortNavigation);$scope.navData=data},sortNavigation=function(item1,item2){return item1.order>item2.order};!function(cb,cberr){_httpGet(_setting.get("navListUrl"),{}).then(function(data){if("function"===$.type(cb)){for(var item1,navList=[],i=0;item1=data[i];i++)if(!item1.state&&!item1.hash){if("array"!=$.type(item1.children))item1.children=[];else for(var item2,j=0;item2=item1[j];j++)"array"!=$.type(item2.children)&&(item2.children=[]);navList.push(item1)}cb(navList)}},function(data){"function"===$.type(cberr)&&cberr(data)})}(renderNavigation)}),backman.directive("bmDatepick",function(){"use strict";return{scope:{bindDate:"="},restrict:"A",link:function($scope,iElm,iAttrs){var format=iAttrs.dateFormat||"YYYY-MM-DD hh:mm:ss",timePick=/(hh|mm|ss)+/g.test(format),eid=iAttrs.id||"datepick"+Date.now()%1e7+parseInt(1e3*Math.random());iElm.attr("id",eid).attr("placeholder",format).addClass("laydate-icon").on("click",function(){var $this=$(this);$this.attr("readonly")||$this[0].dispatchEvent(new MouseEvent("dblclick",{bubbles:!0,cancelable:!0,view:window}))}),$("#"+eid).one("dblclick",function(){var $this=$(this);setTimeout(function(){$("#laydate_today").on("click",function(){$scope.bindDate=$this.val(),$scope.$$phase||$scope.$root.$$phase||$scope.$apply()})},0)}),laydate({elem:"#"+eid,format:format,istime:timePick,event:"dblclick",choose:function(dates){$scope.bindDate=dates,$scope.$$phase||$scope.$root.$$phase||$scope.$apply()}});var initW=$scope.$watch("bindDate",function(newVal,oldVal){newVal&&(initW(),iElm.val(newVal))})}}}),backman.directive("bmDistpicker",function(){"use strict";return{restrict:"A",scope:{region:"=region",selectedPlace:"=selectedplace"},replace:!0,transclude:!1,template:'<div class="distpicker"><div class="distpicker-content" ><select class="" ng-options="province.regionId as province.regionName for province in region.provinces" ng-model="selectedPlace.provinceCode"><option value="" disabled>请选择省份</option></select><select class="" ng-options="city.regionId as city.regionName for city in region.cities" ng-model="selectedPlace.cityCode"><option value="" disabled>请选择市</option></select><select class="" ng-options="block.regionId as block.regionName for block in region.blocks" ng-model="selectedPlace.blockCode"><option value="" disabled>请选择区/县</option></select></div></div>',link:function(scope,iElement,iAttrs){1==parseInt(iAttrs.disabledSelect,10)&&iElement.find(".distpicker-content>select").attr("disabled","disabled")},controller:function($scope,_chinaAddress){_chinaAddress.getTree().then(function(data){$scope.region.provinces=data}),$scope.$watch("selectedPlace.provinceCode",function(newVal,oldVal,scope){newVal?(_chinaAddress.getCities($scope.selectedPlace.provinceCode).then(function(data){$scope.region.cities=data,$scope.region.blocks=[]}),$scope.selectedPlace={provinceCode:newVal,cityCode:"",blockCode:"",provinceName:_chinaAddress.getRegionIdData($scope.region.provinces,newVal),cityName:"",blockName:""}):($scope.region.cities=[],$scope.region.blocks=[])}),$scope.$watch("selectedPlace.cityCode",function(newVal,oldVal,scope){newVal?(_chinaAddress.getDistricts($scope.selectedPlace.provinceCode,$scope.selectedPlace.cityCode).then(function(data){$scope.selectedPlace.cityCode=newVal,$scope.region.blocks=data}),scope.selectedPlace={provinceCode:$scope.selectedPlace.provinceCode,cityCode:newVal,blockCode:"",provinceName:$scope.selectedPlace.provinceName,cityName:_chinaAddress.getRegionIdData($scope.region.cities,newVal),blockName:""}):$scope.region.blocks=[]}),$scope.$watch("selectedPlace.blockCode",function(newVal,oldVal,scope){newVal!==oldVal&&($scope.selectedPlace.blockCode=newVal,$scope.selectedPlace={provinceCode:$scope.selectedPlace.provinceCode,cityCode:$scope.selectedPlace.cityCode,blockCode:newVal,provinceName:$scope.selectedPlace.provinceName,cityName:$scope.selectedPlace.cityName,blockName:_chinaAddress.getRegionIdData($scope.region.blocks,newVal)})})}}}),backman.directive("bmEditor",function(_setting){"use strict";return{scope:{bindContent:"="},restrict:"A",link:function($scope,iElm,iAttrs){var eid=iAttrs.id||"editor"+Date.now()%1e7+parseInt(1e3*Math.random());iElm.attr("id",eid);var editor=KindEditor.create("#"+eid,{items:["source","|","undo","redo","|","template","code","|","cut","copy","paste","plainpaste","wordpaste","|","justifyleft","justifycenter","justifyright","justifyfull","insertorderedlist","insertunorderedlist","indent","outdent","subscript","superscript","clearhtml","quickformat","|","selectall","fullscreen","/","formatblock","fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","strikethrough","lineheight","removeformat","|","image","multiimage","table","hr","emoticons","baidumap","pagebreak","anchor","link","unlink","|","preview","print","about"],width:"100%",height:"270px",resizeMode:1,allowFileManager:!1,uploadJson:_setting.get("kindUploadImgUrl")||"",afterChange:function(){editor&&($scope.bindContent=editor.html(),$scope.$$phase||$scope.$root.$$phase||$scope.$apply())}}),initW=$scope.$watch("bindContent",function(newVal,oldVal){newVal&&(initW(),editor.html(newVal+""))})}}}),backman.directive("bmSidebar",function(){return{scope:!1,restrict:"A",link:function($scope,iElm,iAttrs){iElm.on("click",".treeview-title",function(){var $this=$(this);$this.parent().hasClass("active")?$this.parent().removeClass("active").end().next("ul.treeview-menu").slideUp("fast"):$this.parent().addClass("active").end().next("ul.treeview-menu").slideDown("fast")});var navInitHandler=$scope.$watch("navData",function(newValue,oldValue){if(newValue){navInitHandler();var hash=window.location.hash;setTimeout(function(){iElm.find(".treeview-link").each(function(){var $this=$(this);if($this.attr("href")==hash){var $parent1=$this.parent().parent().show().parent().addClass("active");if($parent1.hasClass("treeview")){var $parent2=$parent1.parent().show().parent().addClass("active");$parent2.hasClass("treeview")&&$parent2.addClass("active")}}})},0)}})}}}),backman.directive("bmSelect2",function($timeout){"use strict";return{scope:{bindList:"=",bindSearch:"@",bindData:"="},restrict:"A",template:'<div class="bm-select2-box" ng-click="$event.stopPropagation();"><input type="text" class="bm-select2-input" ng-model="name"><ul class="bm-select2-list list-unstyled"><li ng-if="isShowCheckbox"><label style="margin: 0;"><input type="checkbox" ng-checked="checkedAll" ng-click="act.doCheckAll(filtoutData);"/><span>全选</span></label></li><li ng-repeat="item in filtoutData"><label style="margin: 0;" ng-if="!isShowCheckbox" ng-click="act.doClick(item);" ng-bind="item[bindSearch]"></label><label style="margin: 0;" ng-if="isShowCheckbox"><input type="checkbox" ng-checked="item.checked" ng-click="act.doClick(item);"/><span ng-bind="item[bindSearch]"></span></label></li></ul> </div>',replace:!0,link:function($scope,iElm,iAttrs,ctrl){var doc=$(document),input=iElm.children("input"),ul=iElm.children("ul");input.click(function(e){var hideUl=function(){ul.hide(),doc.off("click",hideUl)};"none"!=ul.css("display")?(ul.hide(),doc.off("click",hideUl)):(ul.show(),doc.on("click",hideUl))});var filterFn=function(key,data){var searchin=$scope.bindSearch,result=[];return key&&data&&data.length&&angular.forEach(data,function(v,k,obj){v[searchin].indexOf(key)>=0&&result.push(v)}),result};$scope.bindListCopy=[],$scope.filtoutData=[],$scope.name="",$scope.isShowCheckbox=1===parseInt(iAttrs.isShowCheckbox,10),$scope.checkedAll=!1,$scope.bindData=[];var toggleSelectedItem=function(arr,it){var idx=arr.indexOf(it);return it.checked?idx<0&&arr.push(it):idx>=0&&arr.splice(idx,1),arr};$scope.act={doClick:function(item){$scope.isShowCheckbox?(item.checked=!item.checked,$scope.bindData=toggleSelectedItem($scope.bindData,item)):($scope.name=item[$scope.bindSearch],$scope.bindData=[item],ul.hide())},doCheckAll:function(allItems){$scope.isShowCheckbox&&($scope.checkedAll=!$scope.checkedAll,angular.forEach(allItems,function(v,k){v.checked=$scope.checkedAll,toggleSelectedItem($scope.bindData,v)}))}},$scope.$watch("bindList",function(newVal,oldVal){newVal&&($scope.bindListCopy=function(dt){return dt&&dt.length&&angular.forEach(dt,function(v,k){v.checked=!1}),dt}(angular.copy($scope.bindList)),$scope.filtoutData=[].concat($scope.bindListCopy),$scope.name="",$scope.bindData=[],$scope.isShowCheckbox&&($scope.checkedAll=!1))});var timeObj=null;$scope.$watch("name",function(newVal,oldVal){timeObj&&$timeout.cancel(timeObj),timeObj=$timeout(function(){var search=$.trim(newVal)?$.trim(newVal):"";$scope.filtoutData=search?filterFn(search,$scope.bindListCopy):[].concat($scope.bindListCopy),$scope.checkedAll=!1,timeObj=null},500)})}}}),backman.directive("bmUploadImg",function(_setting,_httpPost){"use strict";return{scope:{bindId:"=",bindUrl:"="},restrict:"A",template:'<div class="bm-upload-img-bg img-thumbnail"> <i class="fa fa-image"></i><i class="fa fa-plus"></i></div><div class="bm-upload-img-input"><input type="file" /></div><div class="bm-upload-img-uping" ng-if="state.upAjaxing" title="上传中,请稍后..."> <i class="fa fa-spinner"></i></div><div class="bm-upload-img-view img-thumbnail" ng-if="bindUrl" tabindex="-1"> <span><img ng-src="{{bindUrl}}" data-img-id="{{bindId}}"/></span> <i class="fa fa-times" ng-click="act.delImg()"></i></div>',link:function($scope,iElm,iAttrs){var eid=iAttrs.id||"uploadImg"+Date.now()%1e7+parseInt(1e3*Math.random());iElm.addClass("bm-upload-img").attr("id",eid),$scope.state={upAjaxing:!1},$scope.act={delImg:function(){layer.confirm('<img class="bm-upload-img-del" src="'+$scope.bindUrl+'"/>',{title:"确认删除此图片?"},function(index){layer.close(index),$scope.bindId=$scope.bindUrl="",$scope.$$phase||$scope.$root.$$phase||$scope.$apply()})}};var upload=function(img){var opt=_setting.get("globUploadImg"),sendDate=opt.parameters;sendDate[opt.fileKeyName]=img.src,_httpPost(opt.url,sendDate).then(function(data){$scope.state.upAjaxing=!1,data&&($scope.bindUrl=data.url,$scope.bindId=data.imgId)})};iElm.find("input").on("change",function(){var files=this.files;if(!files[0])return void($scope.state.upAjaxing=!1);if(!_setting.get("globUploadImg").url)return void layer.alert("未检测到上传接口地址!<br>请配置 “全局上传接口” ");if(iAttrs.imgSize&&!/^\d{1,4}[,-_\|xX×]\d{1,4}$/.test(iAttrs.imgSize))return void layer.alert("图片尺寸限制配置不合法!<br>格式例如:300-200");$scope.state.upAjaxing=!0,$scope.$$phase||$scope.$root.$$phase||$scope.$apply();var reader=new FileReader;reader.onload=function(e){var img=new Image;img.onload=function(){if(img.onload=null,iAttrs.imgSize){var matchs=iAttrs.imgSize.match(/^(\d{1,4})[,-_\|xX×](\d{1,4})$/);if(img.width!=matchs[1]||img.height!=matchs[2]){var msg="您选择的图片尺寸为 "+img.width+" × "+img.height+',与此处上传要求的尺寸 <b class="text-danger">'+matchs[1]+" × "+matchs[2]+"</b> 不匹配!是否仍然要坚持继续上传?";layer.confirm(msg,{icon:0,title:"尺寸不匹配!"},function(index){layer.close(index),upload(img)},function(){$scope.state.upAjaxing=!1,$scope.$$phase||$scope.$root.$$phase||$scope.$apply()})}else upload(img)}else upload(img)},img.src=e.target.result},reader.readAsDataURL(files[0])}).end().on("click","img",function(){var $this=$(this),$win=$(window),widthW=parseInt(.8*$win.width());widthW=widthW%2==0?widthW:widthW+1;var heightW=parseInt(.8*$win.height());heightW=heightW%2==0?heightW:heightW+1;var width=this.naturalWidth,height=this.naturalHeight,size=[width,height];width/height>=widthW/heightW?width>widthW&&(size[0]=parseInt(widthW),size[1]=parseInt(height/width*widthW)):height>heightW&&(size[0]=parseInt(width/height*heightW),size[1]=parseInt(heightW)),layer.open({type:1,shade:.3,shadeClose:!0,title:!1,closeBtn:2,move:".layui-layer-content",skin:"bm-upload-img-super",content:"<span>"+$this[0].src+'</span><img src="'+$this.attr("src")+'"/>',area:[size[0]+"px",size[1]+"px"],end:function(){$this.parent().parent().focus()}})})}}}),backman.directive("form",function(){"use strict";return{scope:!1,restrict:"E",priority:10,link:function($scope,iElm,iAttrs){var fName="";iElm.attr("id")?fName=iElm.attr("id"):(fName="form"+Date.now()%1e7+parseInt(1e3*Math.random()),iElm.attr("id",fName)),$scope.$forms||($scope.$forms={}),$scope.$forms[fName]={}}}}),backman.directive("bmVerify",function(){"use strict";return{scope:{bindVerify:"="},restrict:"A",link:function($scope,iElm,iAttrs){if(iAttrs.bindVerify&&iAttrs.verifyItem&&"{}"!=iAttrs.verifyItem){"require"==iAttrs.verifyItem?{require:!0}:JSON.parse(iAttrs.verifyItem.replace(/'/g,'"'));var _dirtyState=(JSON.parse(iAttrs.verifyMsg?iAttrs.verifyMsg.replace(/'/g,'"'):"{}"),!1),$curForm=iElm.closest("form");$curForm.length>0&&$curForm.attr("id");$scope.$watch("bindVerify",function(newVal,oldVal){!_dirtyState&&newVal&&(_dirtyState=!0)})}}}}),backman.directive("bmVerifyControl",function($timeout){"use strict";return{scope:!1,restrict:"A",link:function($scope,iElm,iAttrs){$timeout(function(){var fName="";fName=""!=iAttrs.bmVerifyControl?iAttrs.bmVerifyControl:iElm.closest("form").attr("id"),$scope.$watch("$forms."+fName,function(newVal,oldVal){console.log(newVal)})},10)}}});
//# sourceMappingURL=backman.min.js.map