Как отобразить данные после отправки формы из модального в сетку в angularjs
У меня есть форма, которая является модальной и сетка на странице.
При нажатии кнопки открывается модальное окно, после отправки формы данные должны отображаться в ui-grid.
Я пробовал немного кода в следующем плунжере
http://plnkr.co/edit/GWR0yoACZfCSDhH55PLJ?p=preview
Это код, который я пробовал
var ModalDemoCtrl = function ($scope, $modal, $log) {
var columnDefs = [
{ name: 'customname', displayName: 'Customer Name' },
{ name: 'email', displayName: 'Email' }
];
$scope.gridOptions = {
paginationPageSizes: [10, 15, 20],
paginationPageSize: 10,
enableColumnMenus: false,
enableRowSelection: true,
enableFullRowSelection: true,
multiSelect: false,
columnDefs: columnDefs,
data: $scope.system
};
$scope.open = function () {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: ModalInstanceCtrl,
resolve: {
system: function () {
return $scope.system;
}
}
});
modalInstance.result.then(function (systems) {
$scope.gridOptions.data = systems;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
};
var ModalInstanceCtrl = function ($scope, $modalInstance, system) {
$scope.system = system;
$scope.submit = function () {
$modalInstance.close($scope.system);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
1 ответ
У вас было несколько проблем в вашем плунжере:
Вы на самом деле не загружали скрипт ui-grid или CSS в ваш html или инъекцию
'ui.grid'
в ваш модуль.<script src="http://ui-grid.info/release/ui-grid.js"></script>
<link rel="stylesheet" href="http://ui-grid.info/release/ui-grid.css" type="text/css">
и в вашем модуле плункера: angular.module('plunker', ['ui.bootstrap', 'ui.grid'])...
- Вы никогда не инициализировали
system
на$scope
в вашем главном контроллере, так что я не уверен, что вы пытались разрешить в модальном контроллере. -
$scope.gridOptions.data
объект является массивом, поэтому при закрытии модального, вы хотите нажатьsystem
данные в него, а не устанавливая его равнымsystem
,
то есть:
modalInstance.result.then(function (system) {
console.log(system);
$scope.gridOptions.data.push(system);
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
Если ваша цель заключается в том, чтобы иметь возможность предоставить имя и электронное письмо и заполнить его сеткой пользовательского интерфейса, этот плункер, модифицированный по сравнению с вашим оригиналом, выполнит это. Надеюсь это поможет!