У меня есть страница, index.blade.php
. (без angularjs)
<body>
<table>
<!-- If i click on a row, I store its id in a global variable (selected_id),
then I can click on show_edit_modal to view its details -->
<tr></tr>
<tr></tr>
</table>
<button id="show_edit_modal">Show Modal</button>
<div id="edit_modal">
<!-- empty at first -->
</div>
$('#show_edit_modal').click(function(){
// Fetch view
$.ajax({
type: 'GET',
url: '/get_edit/' + selected_id,
success: function(response) {
$('#edit_modal').html(response);
}
});
});
</body>
Нажмите кнопку «Добавить» -> появится модальное окно.
По щелчку будет отправлен ajax-запрос, чтобы получить представление (edit.blade.php), которое будет размещено внутри этого модального окна. Не используя iframe. Запрос вернет файл вида / блейда.
В контроллере, получателе ajax-запроса:
$data = Model::find($id);
return view('edit', compact('data'));
edit.blade.php
<div ng-app="itemsModule">
<div ng-controller="editController">
...
</div>
</div>
<script src="angular.min.js">
<script src="/controllers/edit.js">
Это извлеченное представление содержит приложение angularjs. Скрипт библиотеки angularjs, скрипт контроллера, все загруженные внутри этого представления.
Возможно ли это? Если так, есть ли стандартный способ сделать это? Или мне стоит попробовать реструктуризацию?
Я попытался запустить это, и оно работает при первом клике, но когда я щелкаю по другой строке и пытаюсь редактировать детали, я получаю предупреждение о попытке загрузить angularjs более одного раза.