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