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);
};

该功能在我第二次加载页面时无法正常工作,因为此处引用的编辑器实例不正确。

对此的解决方法是在父控制器中创建一个全局变量,并在每次调用子控制器时增加它并像这样调用编辑器:

jQuery.wymeditors(i);

当 i 是每次调用控制器时递增的值。这有效,我检查了它。但在我看来,可能有更好的方法。

4

0 回答 0