Vojta's angularJS directiveを使用しましたが、ckeditorがサービスからのデータを表示できないことがありました。これはリフレッシュ時にはほとんど起こりませんでしたが、ページに戻るときによく起こりました。私は$ render関数が常に正しいデータでck.setDataを呼び出していることを確認できましたが、時には表示されませんでした。angularjs ckeditorディレクティブがサービスからデータをロードできない場合がある
11
A
答えて
11
ckeditorが準備される前に、$ renderメソッドが呼び出されたように見えることがあります。私は、ckeditorの準備ができてから少なくとも1回呼び出されたことを確認するために、リスナーをinstanceReadyイベントに追加することでこれを解決できました。
ck.on('instanceReady', function() {
ck.setData(ngModel.$viewValue);
});
完全性のために、私が使用した完全な指示があります。
//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());
}
});
}
完全なコードを参照してください。
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
また、私はこの問題 とするとき、私は新しいディレクティブを見つけを満たしています。それは私のためにうまくいく!
これを試してください:
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);
};
}
を};
関連する問題
- 1. CKeditorにデータがロードされない場合があります。
- 2. AngularJS Textareaデータがロードされている場合
- 3. サービスからのAngularJSデータのロード
- 4. AngularJs ng-ifディレクティブが機能しない場合
- 5. CKEDITORデータベースからデータをロードするAJAX
- 6. AngularjsサービスがFirebaseからデータを返さない
- 7. AngularJS式がサービスからのデータを表示しない
- 8. ng-if内にディレクティブが存在する場合、AngularJSディレクティブのコンパイル関数が実行されない
- 9. AngularJSがモジュールをロードできない
- 10. MVC5 AngularJSデータがサービスからコントローラに渡されない
- 11. uib-paginationが別のディレクティブでラップされている場合、AngularJSテーブルのデータは更新されませんか?
- 12. Struts 2、AngularJS:新しいデータがある場合にクライアント側にデータを送信
- 13. Angularjs:データを含むビューで動的にディレクティブをロードする
- 14. Feignクライアントがサービスをロードできない
- 15. AngularJSサービスはOKですがデータなし
- 16. データが見つからない場合のメッセージ付きHTMLリストフィルタ
- 17. AngularJs:内部のフォーム - コントローラからアクセスできない場合
- 18. angularjs($ logの場合でも)の別のディレクティブからのデータを待つようにディレクティブを作る方法はありますか?
- 19. src URLから画像をロードできない場合のキャッチ
- 20. サービスからのデータを使用してディレクティブをロードする方法
- 21. angularjsでng-ckeditorディレクティブを使用するには?
- 22. AngularJS - ディレクティブ/コントローラが一度だけロードされるのはなぜですか?
- 23. ngCloakディレクティブが不要な場合
- 24. Google Mapsがロードされない場合があります
- 25. CDNが使用されている場合はローカルckeditorプラグインをロードし、Chromeキャッシュの場合は
- 26. ストアドプロシージャでデータが見つからない場合は、フィールドをスキップ
- 27. Angularjsディレクティブのアトリビュートにアクセスできない
- 28. AngularJSディレクティブ - jQueryウィジェットでngModelを使用する場合のベストプラクティス
- 29. 角型ディレクティブng-bind-htmlが動作しない場合があります
- 30. サーバーからのデータがない場合はメッセージをトーストする
このソリューションはサイトで引き続き使用できますか?私はこれをあなたのものを含めいくつかの方法で動作させようとしましたが、それでもコンテンツは断続的に読み込まれません。 – keepitreal