Вот что я делал.
Сначала создайте угловой шаблон, который будет вашим модальным всплывающим окном. Сохраните это как html-файл с именем «modalTemplate.html» где-нибудь в вашем каталоге веб-сайта.
<script type="text/ng-template" id="modalTemplate.html">
<h4>welcome to my modal</h4>
<div>
{{someData}}
{{someOtherData}}
</div>
</script>
Затем создайте отдельный контроллер для управления этим шаблона:
MyApp.app.controller("testModalCtrl", ['$scope', 'dialog', 'dataForTheModal', 'otherDataForTheModal',
function testModalCtrl($scope, dialog, dataForTheModal, otherDataForTheModal) {
$scope.someData = dataForTheModal;
$scope.someOtherData = otherDataForTheModal;
$scope.someActionOnTheModal = function() {
//do whatever work here, then close the modal
$scope.dataResultFromTheModal = 'something that was updated'
dialog.close(dataResultFromTheModal); // close this modal
};
}]);
вызова модальной как и от оригинального контроллера:
$scope.openModal = function() {
var d = $dialog.dialog({
templateUrl: 'modalTemplate.html',
controller: 'testModalCtrl',
resolve: {
dataForTheModal: function() {
return 'this is my data';
},
otherDataForTheModal: function() {
return 'this is my other data';
}
//pass as many parameters as you need to the modal
}
});
d.open()
.then(function (dataResultFromTheModal) {
if (dataResultFromTheModal) {
$scope.something = dataResultFromTheModal
/*when the modal is closed, $scope.something will be updated with
the data that was updated in the modal (if you need this behavior) */
}
});
};
Для этой работы необходимо также для ввода $dialog
в ваш основной контроллер. (Так же, как у меня на контроллере testModalCtrl выше)
Наконец, включите шаблон HTML в нижней части страницы:
<div ng-include src="'pathToYourTemplateFile/modalTemplate.html'"></div>
Мне нравится делать модальности, как это, потому что хранение каждую модальности как отдельный шаблон файл держит вещи организованными и сохраняет вашу разметку страницы чистой. Кроме того, это упрощает повторное использование модалов во всем приложении.
Ошибка 'Firebug':' Ошибка: [$ parse: lexerr] Ошибка Lexer: прекращенная цитата в столбцах 31-32 ['] в выражении [views/modals/myModal.html']. ' – Shamoon
my bad, Я отказался от одной кавычки в ng-include src. См. Обновленный ответ, это должно быть src = "'.....'" – kmdsax