• angularJS使用编写KindEditor,UEidtor,jQuery指令,双重绑定


    第一步

    <!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');
                    });
                });
            })
        }
    }]);
    

      

  • 相关阅读:
    方便的使用单击和双击更新DataGrid中的数据的例子 (转)
    针对 .NET 开发人员的存储过程评估(转)
    ASP.NET创建Web服务之XML基础结构(转)
    移动业务咨询系统--用VoiceXML开发语音应用程序(转)
    创建动态数据输入用户界面 (转)
    ASP.NET缓存:方法和最佳实践(转)
    ASP.NET 应用程序性能优化(转)
    出色图形用户界面(GUI)设计规范(转,中英对比)
    五种常见的ASP.NET安全缺陷(转)
    ASP.net控件开发系列之(一)开篇(转)
  • 原文地址:https://www.cnblogs.com/qiyecao/p/6908306.html
Copyright © 2020-2023  润新知