1

私は自分のプロジェクトに WYMeditor を使用しています。ここに API があります: http://wymeditor.readthedocs.org/

だから私は自分の問題を検出し、解決策を持っていますが、私の解決策は正しいアプローチのようには見えません.

$routeProvider で定義された複数のビューがあります。それらはすべてうまく機能します。問題は次のとおりです。

エディターがあるビューを処理する angularjs コントローラーがあり、次のようにコントローラーでエディターを初期化します。

$scope.resume = GetModel();
$("#editor_summary").wymeditor({
html: $scope.resume.summary;
});

GetModel は、localStorage に保存されているオブジェクトを取得するメソッドで、内部に html を含むエディターをロードします。これは非常にうまく機能します。プロジェクトでエディターを使用するのはこれだけなので、エディターのインスタンスを取得するための次のコードがあります。

var summary_wym = jQuery.wymeditors(0);
//jQuery.getWymeditorByTextarea(jQuery('#editor_summary'));
//Tried also the getWymeditorByTextarea, yields the same results.

これは、アプリを初めて実行するときにうまく機能しますが、別のビューに移動してから戻ると、jQuery.wymeditors(0) は必要なエディターではなくなり、必要なエディター インスタンスは jQuery.wymeditors(1) になります。ビューに戻った後にコントローラーが再度呼び出され、より新しいエディターの別のインスタンスが作成されました。

この関数では、ローカルストレージをエディター データで更新します。

$scope.savechanges = function () {
    console.log(summary_wym.html());
    var resume = GetModel();
    resume.summary = summary_wym.html();
    UpdateModel(resume);
};

ここで参照されているエディターのインスタンスが正しくないため、ページを 2 回目に読み込んだときに関数が正しく機能しません。

これを修正するには、親コントローラーでグローバル変数を作成し、子コントローラーが呼び出されるたびにそれを増やし、次のようにエディターを呼び出します。

jQuery.wymeditors(i);

i がコントローラーが呼び出されるたびに増加する値の場合。これは機能し、私はそれをチェックしました。しかし、私にはもっと良いアプローチがあるように思えます。

4

0 に答える 0