4

ユーザーが編集ウィンドウに変更を加えると、バッキング データ オブジェクトが常に更新されているように見えます。ただし、ユーザーが [SOURCE] をクリックして変更を加えると、更新がないように見えます。

コードに次を追加しました。

        ck.on('mode', function () {
            $scope.$apply(function () {
                ngModel.$setViewValue(ck.getData());
            });
        });

これは、ユーザーが [SOURCE] から通常のビューに戻ったことを感知し、それが発生したときにデータを更新します。

ただし、ユーザーが [SOURCE] ビューにとどまり、画面で [保存] をクリックすると、最新の変更が反映されません。[SOURCE] ビューで変更をリッスンし、これらの変更が行われたときにバッキング データストアを更新する方法はありますか?

4

2 に答える 2

2

@ https://github.com/esvit/ng-ckeditorをご覧いただけますか

すぐに使用できる Ckeditor ディレクティブ

于 2013-10-01T11:52:36.343 に答える
1

いつでも「blur」ディレクティブを追加して、blur の [SOURCE] からデータを取得できます...

app.directive('blur', function () {
    return function (scope, elem, attrs) {
        elem.on('change', function () {
            scope.$apply(attrs.blur);
        });
    };
});

$scope.getCkData = function () {$scope.ckData = ck.getData();};


<textarea id="editor1" name="editor1" blur="getCkData()">Default</textarea>

さて、CK Editor を見ると、「ソース」ボタンをクリックすると、新しいテキストエリアがエディター ウィンドウにオーバーレイされます。そのため、jquery セレクターを使用してぼかしを追加する必要がある場合があります。

$('#editor1 > textarea').attr('blur', 'getCkData()');

したがって、この方法では、誰かがソースまたは wysiwyg ビューを離れるたびに、モデルが更新されます。

于 2013-09-25T20:44:35.357 に答える