| 1 | <!doctype html> |
|---|
| 2 | <html> |
|---|
| 3 | <head> |
|---|
| 4 | <title>CkEditor</title> |
|---|
| 5 | </head> |
|---|
| 6 | <body ng-app='myApp'> |
|---|
| 7 | <div ng-controller="MyCtrl"> |
|---|
| 8 | <div ng-repeat="editor in editors"> |
|---|
| 9 | <textarea id="{{editor.id}}" |
|---|
| 10 | data-ng-model="editor.content" |
|---|
| 11 | value="{{editor.content}}" |
|---|
| 12 | name="{{editor.name}}" |
|---|
| 13 | style="width:670px !important" |
|---|
| 14 | is-read-only="{{editor.isReadOnly}}" |
|---|
| 15 | data-ck-editor></textarea> |
|---|
| 16 | <br /> |
|---|
| 17 | </div> |
|---|
| 18 | </div> |
|---|
| 19 | </body> |
|---|
| 20 | </html> |
|---|
| 21 | <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.js"></script> |
|---|
| 22 | <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script> |
|---|
| 23 | <script src="http://cdn.ckeditor.com/4.4.3/standard/ckeditor.js"></script> |
|---|
| 24 | <script language="javascript"> |
|---|
| 25 | var app = angular.module("myApp", []); |
|---|
| 26 | app.controller('MyCtrl', function ($scope) { |
|---|
| 27 | $scope.option = true; |
|---|
| 28 | $scope.editors = [ |
|---|
| 29 | { |
|---|
| 30 | id: 'sample1', |
|---|
| 31 | content: 'sample 1 content ENABLED', |
|---|
| 32 | name: 'sample1', |
|---|
| 33 | isReadOnly: false, |
|---|
| 34 | |
|---|
| 35 | }, { |
|---|
| 36 | id: 'sample2', |
|---|
| 37 | content: 'sample 2 content DISABLED', |
|---|
| 38 | name: 'sample2', |
|---|
| 39 | isReadOnly: true, |
|---|
| 40 | |
|---|
| 41 | } |
|---|
| 42 | ]; |
|---|
| 43 | }).directive('ckEditor', [ |
|---|
| 44 | function () { |
|---|
| 45 | return { |
|---|
| 46 | require: '?ngModel', |
|---|
| 47 | link: function ($scope, elm, attr, ngModel) { |
|---|
| 48 | var selectedElement = elm[0]; |
|---|
| 49 | if (selectedElement !== null && selectedElement !== undefined) { |
|---|
| 50 | |
|---|
| 51 | var loadCk = function () { |
|---|
| 52 | |
|---|
| 53 | ck.on('pasteState', function () { |
|---|
| 54 | $scope.$apply(function () { |
|---|
| 55 | ngModel.$setViewValue(ck.getData()); |
|---|
| 56 | }); |
|---|
| 57 | }); |
|---|
| 58 | // wait until the editor has done initializing |
|---|
| 59 | ck.on("instanceReady", function () { |
|---|
| 60 | // insert code to run after editor is ready |
|---|
| 61 | ck.setData(ngModel.$modelValue); |
|---|
| 62 | if (attr.isReadOnly) { |
|---|
| 63 | if (attr.isReadOnly === 'true') |
|---|
| 64 | ck.setReadOnly(true); |
|---|
| 65 | else |
|---|
| 66 | ck.setReadOnly(false); |
|---|
| 67 | } |
|---|
| 68 | |
|---|
| 69 | }); |
|---|
| 70 | ngModel.$render = function () { |
|---|
| 71 | ck.setData(ngModel.$modelValue); |
|---|
| 72 | //ck.focus(); |
|---|
| 73 | }; |
|---|
| 74 | } |
|---|
| 75 | |
|---|
| 76 | if (attr.id) |
|---|
| 77 | elm[0].id = attr.id; |
|---|
| 78 | if (attr.name) |
|---|
| 79 | elm[0].name = attr.name; |
|---|
| 80 | if (attr.value) { |
|---|
| 81 | ngModel.$modelValue = attr.value; |
|---|
| 82 | } |
|---|
| 83 | var ck = CKEDITOR.replace(elm[0]); |
|---|
| 84 | loadCk(); |
|---|
| 85 | } |
|---|
| 86 | } |
|---|
| 87 | }; |
|---|
| 88 | } |
|---|
| 89 | ]); |
|---|
| 90 | </script> |
|---|