第一步
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body ng-app="app" ng-controller="AppCtrl as vm"> <button ng-click="vm.click()">Click Me</button> <ui-view></ui-view> <script src="bower_components/angular/angular.min.js"></script> <script src="bower_components/angular-ui-router/release/angular-ui-router.min.js"></script> <script src="bower_components/oclazyload/dist/ocLazyLoad.min.js"></script> <script src="app.js"></script> </body> </html>
第二步 app.js
var app = angular.module('webapp', ['ngRoute', 'oc.lazyLoad']);
第三步
1、KindEditor(自己使用)
//文本编辑器 app.directive('kindeditor', ['$ocLazyLoad', function ($ocLazyLoad) { return{ restrict: 'AE', require: '?ngModel', link: function (scope, element, attrs, ctrl) { $ocLazyLoad.load('/Scripts/kindeditor/kindeditor-all-min.js') .then(function() { var _initContent, editor; var fexUE = { initEditor: function () { editor = KindEditor.create(element[0], { '100%', height: '400px', resizeType: 1, uploadJson: '/Scripts/kindeditor/asp.net/upload_json.ashx', fileManagerJson: '/Scripts/kindeditor/asp.net/file_manager_json.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(借鉴自http://www.jb51.net/article/60435.htm)
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'); }); }); }) } }]);