Я знаю, что это спрашивали здесь так много раз, и я тоже нашел это. Но это не могло решить мою проблему. Вот случай. У меня есть одно приложение AngularJS. У меня есть страница со списком. У меня есть кнопка добавить. Когда я нажимаю кнопку «Добавить», появляется всплывающее окно с формой. Я хочу изменить URL-адрес, когда появится всплывающее окно, но в том же контроллере. Также я хотел бы добавить некоторые другие кнопки на каждую, некоторые html-дисплеи в виде всплывающих окон или в другом месте, но тот же контроллер без перезагрузки всей области при изменении URL-адреса.
Что я пробовал.
app.js
var WebClientApp = angular.module('WebClientApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ui.bootstrap',
'ngRoute'
]);
WebClientApp.config(function ($routeProvider) {
$routeProvider
.when('/groups/:template', {
templateUrl: 'groups.html',
controller: 'GroupCtrl'
}
группы.html
<div>
<button ng-click="showAdd()">Add Group</button>
<div ng-include src="views/listpage.html">
<div ng-if="addGroupModal" class="popup-modal">
<form name="addGroup" ng-submit="addandEditGroup()">
<input type="text" ng-model="group.name">
</form>
<div>
<div ng-if="editGroupModal" class="popup-modal">
<form name="editGroup" ng-submit="saveGroup()">
<input type="text" ng-model="group.name">
<input type="text" ng-model="group.desc">
<input type="text" ng-model="group.id">
</form>
<div>
Контроллеры.js
WebClientApp.controller('GroupCtrl', функция ($scope,$http, $location, $routeParams) {
$scope.group = {};
$scope.showAdd=function(){
$location.path('/groups/add');
}
var template = $routeParams.template;
switch(template){
case 'add':
loadAddPage();
break;
case 'edit':
loadEditPage();
break;
default:
loadListPageHideAll();
break;
}
function loadAddPage() {
$scope.addGroupModal=true;
$scope.editGroupModal=false;
}
function loadEditPage(){
$scope.addGroupModal=false;
$scope.editGroupModal=true;
}
function loadListPageHideAll() {
$scope.addGroupModal=false;
$scope.editGroupModal=false;
// connect to server and list all groups
}
$scope.addandEditGroup = function() {
$location.path('/groups/edit');
}
$scope.saveGroup = function() {
// Save group with $scope.group.
$location.path('/groups');
}
});
Когда я нажимаю кнопку добавления, он показывает форму добавления. Когда я ввожу имя группы и отправляю, оно должно отображать форму редактирования после изменения URL-адреса с именем группы, заполненным в форме. Но когда я пытаюсь, значение группового объекта становится пустым, поскольку URL-адрес меняется. Я добавил следующее в контроллер, но не знаю, что делать дальше.
$scope.$on('$routeChangeStart', function(event, present, last) {
console.log(event,present,last);
});
Как назначить переменные области действия последнего маршрута текущей области действия маршрута. Я также пытался перезагрузить поиск на false, но это не сработало.