使用带有angularJS的wymeditor,路由和视图

时间:2016-01-30 22:40:42

标签: javascript jquery angularjs wymeditor

我正在使用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) ,因为在返回视图后再次调用控制器,创建了另一个更新的编辑器实例。

在此功能中,我使用编辑器数据更新localstorage:

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

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

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

jQuery.wymeditors(i);

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

0 个答案:

没有答案