Я пытаюсь переключить представление, как только нажимается кнопка "Добавить" (см. Код ниже). Однако, когда я нажимаю кнопку "Добавить", единственное, что происходит, это то, что "/addRecordType" прикрепляется к концу моего URL-адреса в браузере вместо того, чтобы разрешать его "templates/add-record-type.html" ', как конфигурирует его команда. Почему это происходит и как я могу заставить его работать? Благодарю!
parserconfig.html
<!DOCTYPE html>
<html ng-app='parserconfigApp'>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="https://code.angularjs.org/1.3.14/angular-route.min.js"></script>
<title>Parser Config</title>
</head>
<body>
<div ng-controller='ParserConfigController as parserConfig'>
<button ng-click="changeView('addRecordType')">Add</button>
</div>
<script type="text/javascript" src="parserconfigApp.js"></script>
</body>
</html>
parserconfigApp.js
var app = angular.module('parserconfigApp', ['ngRoute']);
app.controller('ParserConfigController', ['$scope', '$location', function($scope, $location){
$scope.changeView = function(view) {
$location.path(view);
}
}]);
app.controller('AddRecordTypeController', ['$scope', function($scope){
}]);
app.config('$routeProvider',
function($routeProvider) {
$routeProvider.
when('/recordTypeList', {
templateUrl: '/parserconfig.html',
controller: 'ParserConfigController'
}).
when('/addRecordType', {
templateUrl: 'templates/add-record-type.html',
controller: 'AddRecordTypeController'
}).
otherwise({
redirectTo: '/recordTypeList'
});
});
Извините, мой другой ответ был менее полезным, я думаю, что это может быть вашим решением.
$location.path(view);
Только изменит ваш URL-адрес, не загрузив новый маршрут. Если вы немедленно используете
$scope.$apply()
Затем вы должны перейти на этот маршрут.
См. Здесь для получения дополнительной информации
when('/addRecordType', {
templateUrl: 'templates/add-record-type.html',
controller: 'AddRecordTypeController'
}).
Должно быть
when('/addRecordType', {
templateUrl: '/templates/add-record-type.html', // Slash added
controller: 'AddRecordTypeController'
}).
Вместо этого используйте location.url
this.changeView = function(viewName){
$location.url('/' + viewName);
}
Или вы можете использовать ui-router, который является улучшенным угловым маршрутизатором, популярной альтернативой угловому маршруту