ich Vojta's angularJS directive verwendet laden, aber manchmal würde ckeditor nicht die Daten von einem Service anzuzeigen. Dies geschah fast nie bei einem Refresh, aber es passierte häufig beim Navigieren zur Seite. Ich war in der Lage zu überprüfen, ob die $ Render-Funktion wurde immer ck.setData mit den richtigen Daten aufrufen, aber manchmal wäre es nicht angezeigt werden soll.AngularJS ckeditor Richtlinie manchmal keine Daten aus einem Dienst
11
A
Antwort
11
Es scheint, dass die Methode $ machen manchmal genannt wurde, bevor ckeditor bereit war. Ich war in der Lage, dies zu beheben, indem Sie einen Listener an dem instanceReady Ereignis Hinzufügen, um sicherzustellen, dass es mindestens einmal aufgerufen, nachdem ckeditor bereit war.
ck.on('instanceReady', function() {
ck.setData(ngModel.$viewValue);
});
Im Interesse der Vollständigkeit, hier ist die vollständige Richtlinie, die ich verwendet habe.
//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());
}
});
}
siehe vollständigen Code:
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
Ich treffe auch dieses Problem Und wenn ich eine neue Richtlinie gefunden. Es funktioniert gut für mich !!!
Bitte versuchen Sie dies:
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);
};
}
};
Verwandte Themen
- 1. AngularJS Richtlinie wird manchmal nicht
- 2. AngularJS: Dienst in Richtlinie einfügen?
- 3. $ watching Daten in einem Dienst in AngularJS
- 4. AngularJS element.innerHTML undefiniert aus Richtlinie
- 5. AngularJS Daten vom Dienst laden
- 6. Kann keine Richtlinie in AngularJS 1.5 Komponente
- 7. Keine Daten aus einem Formular
- 8. angularjs HTTP-Dienst warten auf Daten
- 9. AngularJS zeigt keine Daten
- 10. Core Data keine korrekten Daten manchmal
- 11. Fragezeichen in AngularJS Richtlinie
- 12. Dekorieren AngularJS Richtlinie Vorlage in der Richtlinie
- 13. AngularJS: Richtlinie/Dependency Injection
- 14. , wie Daten aus Winkel Richtlinie zurück
- 15. AngularJS Controller-Richtlinie
- 16. Empfangen von Daten im Dienst von einem anderen Dienst
- 17. AngularJS: Daten vom Dienst zum Controller
- 18. AngularJS - Richtlinie funktioniert nicht
- 19. AngularJs Richtlinie Namenskonventionen
- 20. AngularJS GoogleMap-Richtlinie
- 21. AngularJS Richtlinie Rückruf
- 22. Inject AngularJS Richtlinie
- 23. AngularJS animieren Richtlinie
- 24. AngularJS Richtlinie nicht funktioniert
- 25. AngularJS Richtlinie: $ rootScope: infdig Fehler
- 26. AngularJS $ http.post sendet keine Daten
- 27. CKEditor zeigt keine Sonderzeichen
- 28. WCF-Dienst empfängt keine Daten im POST
- 29. AngularJS-Broadcast von einem Dienst, der keinen Anruf zum zweiten Dienst auslöst
- 30. Daten vom Server in einem Dienst
hat weiterhin diese Lösung für Ihre Website zu arbeiten? Ich habe versucht, dies auf mehrere Arten (einschließlich Ihrer) zu arbeiten und trotzdem wird der Inhalt zeitweise nicht geladen. – keepitreal