Serhioromano
@Serhioromano
Web Developer

Автоматически определяемая директива?

Все не просто. Значит есть что то вроде редактора. Блочного. Тоесть в него можно вставлять блоки разных типов и менять их местами. Например блок текста, блок заголовка, блок списка, блок разделитель.

Редактор это директива, ну и блоки тоже директивы. Например у нас есть переменна текста.

$scope.text = [{
	"type":    "title",
	"state":   "preview",
	"content": {
		"level": 1,
		"text":  "Это начало статьи"
	}
}, {
	"type":    "markdown",
	"content": {"text": "Теперь работаем надо самим уроком."},
	"state":   "preview"
}]


В данном примере 2 блока. Заголовок и текст, который можно писать в маркдауне.

Ну и директива, это что то вроде.

<editor>
    <block>
        <title content="content" />
    </block>
    <block>
        <markdown content="content" />
    </block>
</editor>


Это конечно супер упрощенно. В реале так стоит ng-repeat и каждый блок компилируется через $compile так как я из вставляю динамически основываясь на $scope.text[i].type.

Блоков очень много разных начиная от текста кончая видео, графиками, ...

Удобно что отдельнеый тип блока, это отдельная директива. Очень легко расширять и добовлять новые блоки.

Теперь вопрос. Может это очевидно уж простите но я не могу сообразить.

Как мне автоматически получить список всех возможных подключеных директив этого типа. Другими словам, внизу редактора, ест выбор, какой блок хотите добавить. Как мне сделать, что если кто то просто добавил файл с директивой блока в script src то блок автоматически появлялся там?

Я пологаю что все директивы типов блока редактора, надо вынести в отдельнй модуль. И что бы все если добавляли директивы, то добавляли в этот модуль только.

Еще вопрос, как к директиве, прикрепить метаданные? Например иконка блока, имя блока, некоторые параметры поведения?
  • Вопрос задан
  • 2234 просмотра
Пригласить эксперта
Ответы на вопрос 1
TekVanDo
@TekVanDo
Javascript Developer
Ну то что мне приходит:
1) Сделать сервис отвечающий за подключение директив.
2) При подключении модуля директивы он регистрирует себя в сервисе.
3) Родительская директива через сервис понимает какими блоками может манипулировать.

по поводу метеоданных, почему не передать их в качестве атрибутов?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы