AngularJS не будет переключать вид

0

Я пытаюсь переключить представление, как только нажимается кнопка "Добавить" (см. Код ниже). Однако, когда я нажимаю кнопку "Добавить", единственное, что происходит, это то, что "/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'
            });
    });
Теги:
view

3 ответа

0

Извините, мой другой ответ был менее полезным, я думаю, что это может быть вашим решением.

$location.path(view);

Только изменит ваш URL-адрес, не загрузив новый маршрут. Если вы немедленно используете

$scope.$apply()

Затем вы должны перейти на этот маршрут.

См. Здесь для получения дополнительной информации

0
when('/addRecordType', {
    templateUrl: 'templates/add-record-type.html',
    controller: 'AddRecordTypeController'
}).

Должно быть

when('/addRecordType', {
    templateUrl: '/templates/add-record-type.html', // Slash added
    controller: 'AddRecordTypeController'
}).
  • 0
    Спасибо, я исправил это как ты сказал, но проблема все еще там ...
0

Вместо этого используйте location.url

        this.changeView = function(viewName){
            $location.url('/' + viewName);
        }

Или вы можете использовать ui-router, который является улучшенным угловым маршрутизатором, популярной альтернативой угловому маршруту

http://www.ng-newsletter.com/posts/angular-ui-router.html

  • 0
    Это не решило проблему. Интересно, если вы уже пробовали это?
  • 0
    Я видел эту работу с другими примерами, не могу ничего попробовать сейчас, на мобильном телефоне.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню