Angularjs编写KindEditor,UEidtor,jQuery指令
目前angularJS非常火热,本人也在项目中逐渐使用该技术,在angularJS中,指令可以说是当中非常重要的一部分,这里分享一些自己编写的指令:
注:本人项目中用了oclazyload进行部分JS文件加载
1、KindEditor
angular.module('AdminApp').directive('uiKindeditor',['uiLoad',function(uiLoad){
return{
restrict:'EA',
require:'?ngModel',
link:function(scope,element,attrs,ctrl){
uiLoad.load('../Areas/AdminManage/Content/Vendor/jquery/kindeditor/kindeditor-all.js').then(function(){
var_initContent,editor;
varfexUE={
initEditor:function(){
editor=KindEditor.create(element[0],{
width:'100%',
height:'400px',
resizeType:1,
uploadJson:'/Upload/Upload_Ajax.ashx',
formatUploadUrl:false,
allowFileManager:true,
afterChange:function(){
ctrl.$setViewValue(this.html());
}
});
},
setContent:function(content){
if(editor){
editor.html(content);
}
}
}
if(!ctrl){
return;
}
_initContent=ctrl.$viewValue;
ctrl.$render=function(){
_initContent=ctrl.$isEmpty(ctrl.$viewValue)?'':ctrl.$viewValue;
fexUE.setContent(_initContent);
};
fexUE.initEditor();
});
}
}
}]);
2、UEditor:
angular.module("AdminApp").directive('uiUeditor',["uiLoad","$compile",function(uiLoad,$compile){
return{
restrict:'EA',
require:'?ngModel',
link:function(scope,element,attrs,ctrl){
uiLoad.load(['../Areas/AdminManage/Content/Vendor/jquery/ueditor/ueditor.config.js',
'../Areas/AdminManage/Content/Vendor/jquery/ueditor/ueditor.all.js']).then(function(){
var_self=this,
_initContent,
editor,
editorReady=false
varfexUE={
initEditor:function(){
var_self=this;
if(typeofUE!='undefined'){
editor=newUE.ui.Editor({
initialContent:_initContent,
autoHeightEnabled:false,
autoFloatEnabled:false
});
editor.render(element[0]);
editor.ready(function(){
editorReady=true;
_self.setContent(_initContent);
editor.addListener('contentChange',function(){
scope.$apply(function(){
ctrl.$setViewValue(editor.getContent());
});
});
});
}
},
setContent:function(content){
if(editor&&editorReady){
editor.setContent(content);
}
}
};
if(!ctrl){
return;
}
_initContent=ctrl.$viewValue;
ctrl.$render=function(){
_initContent=ctrl.$isEmpty(ctrl.$viewValue)?'':ctrl.$viewValue;
fexUE.setContent(_initContent);
};
fexUE.initEditor();
});
}
};
}]);
3、jquery.Datatable:
angular.module('AdminApp').directive('uiDatatable',['uiLoad','$compile',function(uiLoad,$compile){
returnfunction($scope,$element,attrs){
$scope.getChooseData=function(){
varlistID="";
varchooseData=$element.find("input[name=IsChoose]:checkbox:checked");
if(chooseData.length>0){
for(vari=0;i<chooseData.length;i++){
listID+=chooseData[i].value+",";
}
}
returnlistID.substring(0,listID.length-1);
}
$scope.refreshTable=function(){
$scope.dataTable.fnClearTable(0);//清空数据
$scope.dataTable.fnDraw();//重新加载数据
}
uiLoad.load(['../Areas/AdminManage/Content/Vendor/jquery/datatables/jquery.dataTables.min.js',
'../Areas/AdminManage/Content/Vendor/jquery/datatables/dataTables.bootstrap.js',
'../Areas/AdminManage/Content/Vendor/jquery/datatables/dataTables.bootstrap.css']).then(function(){
varoptions={};
if($scope.dtOptions){
angular.extend(options,$scope.dtOptions);
}
options["processing"]=false;
options["info"]=false;
options["serverSide"]=true;
options["language"]={
"processing":'正在加载...',
"lengthMenu":"每页显示_MENU_条记录数",
"zeroRecords":'<divstyle="text-align:center;font-size:12px">没有找到相关数据</div>',
"info":"当前显示第_PAGE_页共_PAGES_页",
"infoEmpty":"空",
"infoFiltered":"搜索到_MAX_条记录",
"search":"搜索",
"paginate":{
"first":"首页",
"previous":"上一页",
"next":"下一页",
"last":"末页"
}
}
options["fnRowCallback"]=function(nRow,aData,iDisplayIndex,iDisplayIndexFull){
$compile(nRow)($scope);
}
$scope.dataTable=$element.dataTable(options);
});
$element.find("theadth").each(function(){
$(this).on("click","input:checkbox",function(){
varthat=this;
$(this).closest('table').find('tr>td:first-childinput:checkbox').each(function(){
this.checked=that.checked;
$(this).closest('tr').toggleClass('selected');
});
});
})
}
}]);
以上3则就是本人编写的AngularJS指令,这里抛砖引玉下,希望对小伙伴们能有所帮助,