zoukankan      html  css  js  c++  java
  • angular js ckeditor directive示例代码

    js版本:

    var cmsPlus = angular.module('cmsPlus', []);
    
    cmsPlus.directive('ckEditor', function() {
      return {
        require: '?ngModel',
        link: function(scope, elm, attr, ngModel) {
          var ck = CKEDITOR.replace(elm[0]);
    
          if (!ngModel) return;
    
          ck.on('instanceReady', function() {
            ck.setData(ngModel.$viewValue);
          });
    
          function updateModel() {
              scope.$apply(function() {
                  ngModel.$setViewValue(ck.getData());
              });
          }
    
          ck.on('change', updateModel);
          ck.on('key', updateModel);
          ck.on('dataReady', updateModel);
          ck.on('paste', updateModel);
          ck.on('selectionChange', updateModel);
    
          ngModel.$render = function(value) {
            ck.setData(ngModel.$viewValue);
          };
        }
      };
    });
     

    typeScript版本:

    export interface ckeditorDirectiveInterface extends ng.IAttributes {
        ckeditorDirective: string;
    }
    
    export class ckeditorDirective implements ng.IDirective {
        restrict = "A";
    
        constructor(private $log: ng.ILogService, private $parse: ng.IParseService, private $window: GlobalDefinitionInterface) {}
    
        static instance(): ng.IDirectiveFactory {
            const directive = ($log: ng.ILogService, $parse: ng.IParseService, $window: GlobalDefinitionInterface) =>
                new ckeditorDirective($log, $parse, $window);
            directive.$inject = ['$log', '$parse', '$window'];
            return directive;
        }
        require = '?ngModel';
        link = (scope: ng.IScope, elm: Element, attrs: ckeditorDirectiveInterface, ngModel: ng.INgModelController): void => {
            let $log = this.$log;
            let $window = this.$window;
            let element = angular.element(elm);
            $log.debug("CKeditor version number:"+CKEDITOR.version);
            
            $log.debug((<any> CKEDITOR.instances)["content"]);
            
            //如果CKEDITOR已经创建存在则执行destroy
            if ((<any> CKEDITOR.instances)["content"]) {
                (<any> CKEDITOR.instances)["content"].destroy();
            }
            
            $log.debug((<any> CKEDITOR.instances)["content"]);
            
            //保持始终创建新的CKEDITOR
            var ckeditor = CKEDITOR.replace(<HTMLTextAreaElement> element[0]);        
            
            $log.debug((<any> CKEDITOR.instances)["content"]);
            if (!ngModel) return;
            ckeditor.on('instanceReady', function () {
                ckeditor.setData(ngModel.$viewValue);
            });
    
            function updateModel() {                                
                //输入内容更新到model
                scope.$apply(function(){
                    ngModel.$setViewValue(ckeditor.getData());
                    $log.debug(ckeditor.getData());
                });
            }
            
            ckeditor.on('change', updateModel);
            ckeditor.on('key', updateModel);
            ckeditor.on('dataReady', updateModel);
            ckeditor.on('paste', updateModel);
            ckeditor.on('selectionChange', updateModel);
            ngModel.$render = function () {
                ckeditor.setData(ngModel.$viewValue);
            };
    
        }
    
    }    
  • 相关阅读:
    Oracle Relink RAC Binary Options 说明
    Oracle 10g 对象 默认 ITL 数量 测试
    Oracle 相关的专业术语 说明
    Oracle 11g 新特性 自适应游标共享(Adaptive Cursor Sharing: ACS) 说明
    symbian 学习笔记(1) 基础
    symbian 学习笔记(3) 手机独有
    计算机体系结构几个常用的知识点记录
    数据结构和算法笔记(3)
    windows mobile 通用曾抽象
    一些简单常用算法整理学习
  • 原文地址:https://www.cnblogs.com/li-you/p/5997130.html
Copyright © 2011-2022 走看看