Здесь я снова прихожу с еще одним вопросом на пути обучения AngularJS.AngularJS: Извлечение данных в директиву с заводской функцией
С помощью этого сообщества я смог достичь более простой версии того, чего хочу достичь. В принципе, добавление данных в заводскую функцию на одном месте и возможность рендеринга в модальном режиме в другом месте приложения. JSFiddle
Однако, хотя я смог заставить его работать с меньшей версией, я не могу заставить его работать над «настоящим» приложением.
Идея приложения очень проста: некоторые администраторы могут создавать ряд форм, которые будут использоваться пользователями приложения, чтобы запрашивать материал через них, заполняя и следуя потоку утверждения.
В приложении есть часть, где форма может быть отредактирована только с пользователями-админами, имеющими доступ, и другой частью приложения, когда обычные пользователи заполняют формы. Существует заводская функция формы, которая содержит и инкапсулирует использование формы модулями и сохраняет временные данные для одной формы (пока я не реализую код для хранения в монго).
Модально хорошо в начале приложения, потому что не работал должным образом, если я поместил его на другие части кода, потому что я также использую вкладки Bootstrap.
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
<peek-form-directive></peek-form-directive>
<render-form></render-form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
, как вы можете видеть, у меня есть 2 директивы внутри коробки модальной
<peek-form-directive></peek-form-directive>
<render-form></render-form>
peekFormDirective очень простая директива, которая только пытается получить данные и показать его в браузере
.directive('peekFormDirective', function (FormServ) {
return {
scope: {},
template: "<pre>{{formData}}</pre>",
restrict: 'E',
link: function (scope, elem, attrs) {
scope.formData = FormServ.currentFormData.getAllItems();
}
};
});
в то время как форма рендеринга очень похожа, но выполняет итерации компонентов и визуализации по одному.
Часть, которую я не могу понять, почему эти директивы работают отлично, если я использую их на странице, где форма может быть отредактирована, а не в модальном. На этой странице редактирования я поместил директивы вне контроллера, как я сделал бы на модальном.
Так, в примере, в этой странице редактирования директива peekFormDirective отображает следующий результат:
[{"order":1,"itemType":"title","data":{"order":0,"itemType":"","data":{},"label":"a"}}]
, когда я нажимаю на той же странице кнопку, чтобы открыть модальное, результат это всегда пустой массив [].
Factory function code The view where works
Первоначально я жестко, что это может быть проблема с областями, но я не думаю, что это так, потому что я извлечения данных из функции фабрики в любом случае.
Почему я могу использовать директивы, как ожидалось, на странице редактирования, а не на модальном?
Вы совершенно правы! Я не могу поверить, что трачу столько времени на такую простую ошибку: (Спасибо, что нашли время. – Gabriel