Я сильно модифицирую плагин WYSIWYG js и вставляю в него свои собственные пользовательские элементы. Чтобы вставить пользовательские элементы, я использую директивы, чтобы их можно было легко поддерживать, если мне нужно внести изменения. Вот пример моего кода:
Первоначальная загрузка редактора wysiwyg:
<div ng-controller="wyswiygCtrl">
<textarea wysiwyg-editor ng-model="content"></textarea>
</div>
Вот пример пользовательского элемента (директивы), который я вставляю в содержимое wysiwyg:
<wysiwyg-element class="custom_element" name="awesome" type="checkbox" checked="true"></wysiwyg-element>
Я использую следующий код в рамках инициализации директивы для компиляции любых пользовательских элементов (директив) внутри него:
var e = angular.element(wysiwygEditor.get(0).innerHTML);
$compile(e.contents())(scope);
wysiwygEditor.html(e);
Он компилирует директивы именно так, как мне нужно, но здесь начинается сложная часть. Мне нужно иметь возможность вызывать функцию в «wysiwygCtrl» из OUTSIDE angular. Я могу сделать это перед компиляцией, но по какой-то причине после использования функции компиляции angular я не могу получить доступ к области действия элементов.
Вот код, который работает до $compile
:
angular.element($('.custom_element')).scope().wysiwygModal();
angular.element($('.custom_element')).scope().$apply();
Я получаю следующую ошибку после попытки вызвать функцию wysiwygModal
после компиляции $:
Uncaught TypeError: Object #<Object> has no method 'wysiwygModal'
Что я делаю не так?