angular $location path изменение

Я пытаюсь изменить представление, используя $location.

Вот как я пытался это сделать.

Вид

<body ng-app="myApp" ng-controller="testCtrl">

        <button ng-click="click();">Press</button>

</body>

Контроллер

var app = angular.module('myApp',[]);

app.controller('testCtrl',function($scope,$location){


   $scope.click = function(){

      $location.path('/main');

   }; 

});

приложение.js

angular.module('myApp', [
    'ngRoute',
    'myApp.view2',
    'myApp.version'
]).
        config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider, testCtrl) {
                $locationProvider.hashPrefix('!');

                $routeProvider


                        .when('/main',
                                {
                                    templateUrl: '/view2.html',
                                    controller: testCtrl

                                })

                        .otherwise({redirectTo: '/view1'});
            }]);

Поэтому, когда я нажимаю кнопку, я могу видеть изменения url от

http://localhost:8383/etest/index.html

к

http://localhost:8383/etest/index.html#/main

Как это исправить?

1 ответ

  1. Вы пропустили, чтобы включить ng-view.

    <body ng-app="myApp">
    <div ng-view></div>
    </body>
    
     // view2.html
    <div ng-controller="testCtrl">
            <button ng-click="click();">Press</button>
    </div>
    
     app.config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider, testCtrl) {
                $locationProvider.hashPrefix('!');
                $routeProvider
                        .when('/main', {
                                    templateUrl: 'templates/view2.html',
                                    controller: testCtrl
                                })
                        .otherwise({redirectTo: '/view1'});
            }]);
    
      $scope.click = function(){
    
      $location.path('/contact'); //you are in main path, So give different path then only you can see the location change easily.
     $route.reload(); // reload the route
    

    };