|
3 | 3 | */ |
4 | 4 | angular.module('ui.tinymce', []) |
5 | 5 | .value('uiTinymceConfig', {}) |
6 | | - .directive('uiTinymce', ['$rootScope', '$compile', '$timeout', '$window', '$sce', 'uiTinymceConfig', function($rootScope, $compile, $timeout, $window, $sce, uiTinymceConfig) { |
| 6 | + .directive('uiTinymce', ['$rootScope', '$compile', '$timeout', '$window', '$sce', 'uiTinymceConfig', 'uiTinymceService', function($rootScope, $compile, $timeout, $window, $sce, uiTinymceConfig, uiTinymceService) { |
7 | 7 | uiTinymceConfig = uiTinymceConfig || {}; |
8 | | - var ID_ATTR = 'ui-tinymce'; |
| 8 | + |
9 | 9 | if (uiTinymceConfig.baseUrl) { |
10 | 10 | tinymce.baseURL = uiTinymceConfig.baseUrl; |
11 | 11 | } |
@@ -50,8 +50,9 @@ angular.module('ui.tinymce', []) |
50 | 50 | } |
51 | 51 | } |
52 | 52 |
|
53 | | - // generate an ID |
54 | | - attrs.$set('id', ID_ATTR + '-' + (new Date().valueOf())); |
| 53 | + // fetch a unique ID from the service |
| 54 | + var uniqueId = uiTinymceService.getUniqueId(); |
| 55 | + attrs.$set('id', uniqueId); |
55 | 56 |
|
56 | 57 | expression = {}; |
57 | 58 |
|
@@ -207,4 +208,27 @@ angular.module('ui.tinymce', []) |
207 | 208 | } |
208 | 209 | } |
209 | 210 | }; |
210 | | - }]); |
| 211 | + }]) |
| 212 | + .service('uiTinymceService', [ |
| 213 | + /** |
| 214 | + * A service is used to create unique ID's, this prevents duplicate ID's if there are multiple editors on screen. |
| 215 | + */ |
| 216 | + function() { |
| 217 | + var UITinymceService = function() { |
| 218 | + var ID_ATTR = 'ui-tinymce'; |
| 219 | + // uniqueId keeps track of the latest assigned ID |
| 220 | + var uniqueId = 0; |
| 221 | + // getUniqueId returns a unique ID |
| 222 | + var getUniqueId = function() { |
| 223 | + uniqueId ++; |
| 224 | + return ID_ATTR + '-' + uniqueId; |
| 225 | + }; |
| 226 | + // return the function as a public method of the service |
| 227 | + return { |
| 228 | + getUniqueId: getUniqueId |
| 229 | + }; |
| 230 | + }; |
| 231 | + // return a new instance of the service |
| 232 | + return new UITinymceService(); |
| 233 | + } |
| 234 | + ]); |
0 commit comments