Użyłem Vojta's angularJS directive, ale czasami ckeditor nie wyświetliłby danych z usługi. To prawie nigdy się nie zdarzyło podczas odświeżania, ale często zdarza się, gdy wracasz do strony. Udało mi się zweryfikować, że funkcja $ render zawsze wywoływała ck.setData z poprawnymi danymi, ale czasami nie była wyświetlana.Angularjs ckeditor dyrektywa czasami nie ładuje danych z usługi
11
A
Odpowiedz
11
Wygląda na to, że metoda $ render była czasami wywoływana, zanim ckeditor był gotowy. Udało mi się to rozwiązać, dodając detektor do zdarzenia instanceReady, aby upewnić się, że został wywołany co najmniej raz po tym, jak cededitor był gotowy.
ck.on('instanceReady', function() {
ck.setData(ngModel.$viewValue);
});
W interesie kompletności, tutaj jest pełna dyrektywa, której użyłem.
//Directive to work with the ckeditor
//See http://stackoverflow.com/questions/11997246/bind-ckeditor-value-to-model-text-in-angularjs-and-rails
app.directive('ckEditor', function() {
return {
require: '?ngModel',
link: function(scope, elm, attr, ngModel) {
var ck = CKEDITOR.replace(elm[0],
{
toolbar_Full:
[
{ name: 'document', items : [] },
{ name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },
{ name: 'editing', items : [ 'Find','Replace','-','SpellChecker', 'Scayt' ] },
{ name: 'forms', items : [] },
{ name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript' ] },
{ name: 'paragraph', items : [
'NumberedList','BulletedList','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock' ] },
{ name: 'links', items : [] },
{ name: 'insert', items : [ 'SpecialChar' ] },
'/',
{ name: 'styles', items : [ 'Styles','Format','Font','FontSize' ] },
{ name: 'colors', items : [] },
{ name: 'tools', items : [ 'Maximize' ] }
]
,
height: '290px',
width: '99%'
}
);
if (!ngModel) return;
//loaded didn't seem to work, but instanceReady did
//I added this because sometimes $render would call setData before the ckeditor was ready
ck.on('instanceReady', function() {
ck.setData(ngModel.$viewValue);
});
ck.on('pasteState', function() {
scope.$apply(function() {
ngModel.$setViewValue(ck.getData());
});
});
ngModel.$render = function(value) {
ck.setData(ngModel.$viewValue);
};
}
};
});
3
function updateModel() {
scope.$apply(function() {
if (ck.getData().length) {
ngModel.$setViewValue(ck.getData());
}
});
}
zobaczyć pełny kod:
return {
require: '?ngModel',
scope: true,
link: function (scope, element, attr, ngModel) {
if (!ngModel) return;
var ck = CKEDITOR.replace(element[0]);
ck.on('instanceReady', function() {
ck.setData(ngModel.$viewValue);
});
function updateModel() {
scope.$apply(function() {
if (ck.getData().length) {
ngModel.$setViewValue(ck.getData());
}
});
}
ck.on('pasteState', updateModel);
ck.on('change', updateModel);
ck.on('key', updateModel);
ck.on('dataReady', updateModel);
ngModel.$render = function() {
ck.setData(ngModel.$modelValue);
};
}
}
0
Ja również spełniać ten problem a kiedy znalazł nową dyrektywę. To działa dobrze dla mnie!!!
Spróbuj tego:
return {
require: '?ngModel',
scope: true,
link: function (scope, element, attr, ngModel) {
if (!ngModel) return;
var ck = CKEDITOR.replace(element[0]);
ck.on('instanceReady', function() {
ck.setData(ngModel.$viewValue);
});
function updateModel() {
scope.$apply(function() {
if (ck.getData().length) {
ngModel.$setViewValue(ck.getData());
}
});
}
ck.on('pasteState', updateModel);
ck.on('change', updateModel);
ck.on('key', updateModel);
ck.on('dataReady', updateModel);
ngModel.$render = function() {
ck.setData(ngModel.$modelValue);
};
}
};
Powiązane problemy
- 1. Proste angularjs przykład czasami nie ładuje
- 2. angularjs dyrektywa nie działa
- 3. AngularJS - dyrektywa nie działa
- 4. Niestandardowa dyrektywa AngularJS $ nie działa
- 5. angularjs klienta select2 dyrektywa
- 6. NSLocalizedString ładuje łańcuch czasami, nie zawsze
- 7. testowanie jednostki angularjs dyrektywa
- 8. Dyrektywa Angularjs usuwa zegarek?
- 9. Dyrektywa AngularJS z ng-repeat not redering
- 10. AngularJS + Facebook jak dyrektywa nie działa
- 11. angularjs dyrektywa klienta ng kliknięcie nie działa
- 12. Dyrektywa angularjs: jak obudować css?
- 13. AngularJS ngModel dyrektywa w wyborze
- 14. Dyrektywa AngularJs z dynamicznym kontrolerem i szablonem
- 15. angularjs dyrektywa rodzic komunikować z dyrektywą dziecięcej
- 16. Usługi z ES6 (AngularJS)
- 17. Dyrektywa AngularJs oglądająca dane asynchroniczne
- 18. angularjs dyrektywa załadunku przed danymi
- 19. angularjs - Dyrektywa testowy jednostka z funkcji jquery
- 20. Dyrektywa AngularJS Ograniczenie kontra E
- 21. Dane obciążenia AngularJS z usługi
- 22. AngularJS bootstrap popover custom dyrektywa
- 23. AngularJS ng-disabled dyrektywa z wyrażeniem nie działa
- 24. Przeglądarka Dokumentów Google czasami nie ładuje treści w iframe
- 25. Wbudowany dokument Google w IFRAME czasami nie ładuje się
- 26. AngularJS - Wywołanie funkcji kontrolera z usługi
- 27. Wymuszenie usługi AngularJS w celu zwrócenia danych przed załadowaniem kontrolera
- 28. Thymeleaf + Boot + AngularJS dyrektywa parser błąd
- 29. AngularJS: Dyrektywa nie jest w stanie uzyskać dostępu obiektów izolowanych
- 30. Dyrektywa ponownego użycia ngClass w AngularJS
Czy to rozwiązanie nadal działa w Twojej witrynie? Próbowałem uruchomić to na kilka sposobów (w tym twój), a nadal zawartość będzie nieregularnie się ładować. – keepitreal