Использование wymeditor с angularJS, маршрутизацией и представлениями
Я использую 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);
Когда я - увеличенное значение каждый раз, когда вызывается контроллер. Это работает, и я проверил это. Но мне кажется, что может быть лучший подход.