Я сделал очень простой повтор некоторых книг, когда пользователь щелкает книгу, он открывает новый модальный. Где они могут редактировать книгу. Поскольку я использую двустороннюю привязку, «отображаемая страница» автоматически изменяется, когда я печатаю на модальном, что является блестящим.AngularJS - Сбросить состояние связанного объекта
Однако я хочу, чтобы пользователь нажал кнопку отмены, и состояние книги вернется к тому, что было до того, как оно было изменено. Возможно ли это в Angular без возврата и сброса всего объекта $ scope.books?
В реальном приложении это будет вызов API, и я бы предпочел не звонить другому серверу, если это не обязательно, конечно. Есть ли образец, который позаботится об этом уже?
(function(){
var app = angular.module('ngModalDemo', ['ui.bootstrap'])
.controller('formController', function($scope, $modal, $log){
$scope.books = [
{ Id: 1, Name:'A Feast For Crows'},
{ Id: 2, Name:'Before they are Hanged'}
];
$scope.openModal = function (currentBook) {
var modalInstance = $modal.open({
templateUrl: 'SomeModal.html',
controller: [
'$scope', '$modalInstance', function($scope, $modalInstance){
$scope.editBook = currentBook;
$scope.saveModal = function (book) {
$modalInstance.close();
};
$scope.cancelModal = function() {
// Restore the previous state here!
$modalInstance.close();
};
}]
});
};
})
})();
<div ng-controller="formController">
<p ng-repeat="displayBook in books">
<a href="#" ng-click="openModal(displayBook)">{{displayBook.Name}}</a>
</p>
<script type="text/ng-template" id="SomeModal.html">
<form name="editForm" ng-submit="saveModal(editBook)" noValidate>
<div class="modal-header">
Name: <input ng-model="editBook.Name" required /><br />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-warning" ng-click="cancelModal()">Cancel</button>
<button class="btn btn-info" ng-disabled="editForm.$dirty && editForm.$invalid">Save</button>
</div>
</form>
</script>
</div>