Возможно, вы не хотите использовать этот контроллер. Поскольку область не изолирована, ваш модаль может вызывать функции с вашего текущего контроллера. Вы также можете иметь встроенный контроллер, например:
Причина, по которой вы не можете использовать функции из текущей области, вам придется предоставить модальную текущую область действия для этого. Будьте осторожны, когда вы это сделаете. Ваш модальный может испортить ваш текущий объект. Я пошел вперед и создал кнопку «сохранить» и «отменить», чтобы вы могли отменить изменения.
Html
<div ng-controller="simpleController">
{{ item.title }}
<button ng-click="open();">Click Me</button>
</div>
шаблон модальный
<script type="text/ng-template" id="views/includes/someModal.html">
<div class="modal-header">
<h3 class="modal-title">Title!</h3>
</div>
<div class="modal-body">
title: {{ item.title }}<br/>
Click the buttons below to change the title throught the controller's function
<button ng-click="fn('test');">test</button>
<button ng-click="fn('test 1');">test 1</button>
<button ng-click="fn('test 2');">test 2</button>
</div>
<div class="modal-footer">
<button ng-click="close(true);">Save</button>
<button ng-click="close();">Close</button>
</div>
</script>
Javascript
angular.module("myApp", ['ui.bootstrap']).controller("simpleController", ["$scope", "$uibModal", function($scope, $uibModal){
$scope.item = { title: "test", stuff: "other stuff"};
$scope.fn = function(title){
$scope.item.title = title;
};
$scope.open = function() {
var intialItem = angular.copy($scope.item);
var modalInstance = $uibModal.open({
templateUrl: 'views/includes/someModal.html',
controller: ["$scope", function(scope){//add other functionality here
scope.close = function(save){
if(!save){
$scope.item = intialItem;
}
modalInstance.close();
}
}],
scope: $scope
}).result.then(function(){
}, function(){
$scope.item = intialItem;//modal was dismissed
});
};
}]);
К сожалению, это не сработало :(Это дало мне эту ошибку:. TypeError: прототип объекта может только be Object или null: undefined – Gaurav