2015-09-18 2 views
0

У меня есть модальный, который я хочу показать сообщение об успешном завершении после его закрытия. Моя проблема контролирует сообщение на главном экране из модального представления. Как показать сообщение (messageSuccess) на другом представлении после его закрытия?закрыть modal и показать сообщение на главной странице

Plunker: http://plnkr.co/edit/IrIt4G7HzAoi4uh7euVu?p=preview

модальный контроллер: это закрывает модальное

$scope.ok = function() { 
    $modalInstance.close($scope.selected.item); 
    $scope.messageSuccessText = 'Saved!'; 
    $scope.messageSuccess = true; 
    }; 

HTML на главном экране (но как я могу показать сообщение на другой точки зрения после того, как он закрывается?):

<div class="alert alert-success text-center" data-ng-show="messageSuccess">{{messageSuccessText}}</div> 

ответ

1

модальные имеет изолированный объем, так что вы должны использовать близкий метод для передачи данных:

Модальные Ctrl:

$scope.ok = function() { 
    $modalInstance.close({item: $scope.selected.item, message: 'Saved!'}); 
}; 

родитель Ctrl:

modalInstance.result.then(function (result) { 
    $scope.selected = result.item; 
    $scope.messageSuccessText = result.message; 
}, function() { 
    $log.info('Modal dismissed at: ' + new Date()); 
}); 

Родитель Html:

<div class="alert alert-success text-center" data-ng-show="messageSuccessText">{{messageSuccessText}}</div> 
0

Вы только что передали сообщение в функции close.

$modalInstance.close($scope.selected.item, 'Saved!', true); 

Тогда в контроллере вы бы код, который выглядел бы что-то похожее на это:

modalInstance.result.then(function(item, message, success) { 
    $scope.messageSuccess = message; 
    $scope.messageSuccessText = success; 
}, function() { 
    // Dismiss function called instead. 
}); 
+0

Возможно, вам придется поставить все в один объект, прежде чем передавать его. Документы не очень понятны. –

0

Вы можете закрыть модальный с объектом, который содержит все данные, которые вам нужно от него. В этом случае messageSuccessText обработчик для закрытия модального диалога будет выглядеть следующим образом:

$scope.ok = function() { 
    var modalData = { 
     selectedItem: $scope.selected.item, 
     messageSuccess: true, 
     messageSuccessText: 'Saved!' 
    }; 
    $modalInstance.close(modalData); 
}; 

и в контроллере, в котором открыт модальный диалог:

modalInstance.result.then(function (modalData) { 
    $scope.selected = modalData.selectedItem; 
    $scope.messageSuccess = modalData.messageSuccess; 
    $scope.messageSuccessText = modalData.messageSuccessText; 
}, function() { 
    $log.info('Modal dismissed at: ' + new Date()); 
}); 

Вот ваш обновленный Plunker.

Смежные вопросы