首页 / 脚本样式 / JavaScript / 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;
var fexUE = {
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
var fexUE = {
initEditor: function () {
var _self = this;
if (typeof UE != "undefined") {
editor = new UE.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) {
return function ($scope, $element, attrs) {
$scope.getChooseData = function () {
var listID = "";
var chooseData = $element.find("input[name = IsChoose]:checkbox:checked");
if (chooseData.length > 0) {
for (var i = 0; i < chooseData.length; i++) {
listID += chooseData[i].value + ",";
}
}
return listID.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 () {
var options = {};
if ($scope.dtOptions) {
angular.extend(options, $scope.dtOptions);
}
options["processing"] = false;
options["info"] = false;
options["serverSide"] = true;
options["language"] = {
"processing": "正在加载...",
"lengthMenu": "每页显示 _MENU_ 条记录数",
"zeroRecords": "<div style="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("thead th").each(function () {
$(this).on("click", "input:checkbox", function () {
var that = this;
$(this).closest("table").find("tr > td:first-child input:checkbox").each(function () {
this.checked = that.checked;
$(this).closest("tr").toggleClass("selected");
});
});
})
}
}]);
以上3则就是本人编写的AngularJS指令,这里抛砖引玉下,希望对小伙伴们能有所帮助,