2016-03-16 5 views
0

Я не основная рабочей маршрутизация, но когда я пытаюсь включить Params в моих маршрутах, ничего делает в моем ngviewrouteParams не работает должным образом

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

myApp.config(function($routeProvider) { 

    $routeProvider 

    .when('/', { 
     templateUrl: 'pages/main.html', 
     controller: 'mainController' 
    }) 

    .when('/second/:num', { 
     templateUrl: 'pages/second.html', 
     controller: 'mainController' 
    }) 

}); 

myApp.controller('mainController', 
    ['$scope', '$log', '$routeParams', function($scope, $log, $routeParams) { 
    $scope.name = "Chris"; 
    alert($routeParams); 
    $scope.num = $routeParams.num; 
    $log.info($scope.num) 
}]); 

Так что, когда я пытаюсь и доступ/второй /: Num ничего не делает в мой ngview. Но если я делаю/или/секунду, эти страницы работают правильно

+0

попробовать это, когда ('/ второй /: Num', { templateUrl: '/pages/second.html', контроллер : 'mainController' }) –

+0

не работал. im на самом деле не уверен, что здесь не так, как в моем коде – ceckenrode

+1

Вы видите какую-либо ошибку на консоли своего браузера? –

ответ

0

Эй, пожалуйста, проверьте контроллер на странице second.html, добавлен ли контроллер или нет, и я предлагаю всегда использовать разные контроллеры для каждого шаблона.

Лучшим способом является использование stateProvider легко и гибко, чем routeProvider, оба являются одинаковыми, но stateProvider более удобен.

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

myApp.config(function($stateProvider) { 

    $stateProvider 
    .state('/', { 
    templateUrl: 'pages/main.html', 
    controller: 'mainController' 
    }) 

    .state('/second/:num', { 
    templateUrl: 'pages/second.html', 
    controller: 'mainController' 
    }) 

}); 
myApp.controller('mainController', ['$scope', '$log', '$stateParams', function($scope, $log, $stateParams) { 
    $scope.name = "Chris"; 
    alert($stateParams); 
    $scope.num = $stateParams.num; 
    $log.info($scope.num) 
}]); 
0

Должно быть что-то в том, что вы объявляете путь к своим шаблонам или какую-то ошибку в своей консоли. Ниже приводится репродукция вашего кода с HTML-файлами в нг-шаблонов:

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

 
myApp.config(function($routeProvider) { 
 

 
    $routeProvider 
 

 
    .when('/', { 
 
    templateUrl: 'main.html', 
 
    controller: 'mainController' 
 
    }) 
 

 
    .when('/second/:num', { 
 
    templateUrl: 'second.html', 
 
    controller: 'mainController' 
 
    }) 
 

 
}); 
 
myApp.controller('mainController', ['$scope', '$location', '$log', '$route', '$routeParams', function($scope, $location, $log, $route, $routeParams) { 
 
    $scope.name = "Chris"; 
 
    $scope.num = $routeParams.num || 'not defined'; 
 
    console.log($scope.num); 
 
    
 
    $scope.goTo = function(number) { 
 
    $location.path('/second/' + number); 
 
    }; 
 
    $scope.route = $route.current; 
 
    $scope.goHome = function(number) { 
 
    $location.path('/'); 
 
    }; 
 
}]);
<!DOCTYPE html> 
 
<html ng-app="myApp"> 
 

 
    <head> 
 
    <script data-require="[email protected]" data-semver="1.4.8" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script> 
 
    <script data-require="[email protected]" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular-route.js"></script> 
 
    </head> 
 

 
    <body ng-controller="mainController"> 
 
    <div ng-view></div> 
 
    
 
    <script type="text/ng-template" id="main.html"> 
 
     <pre>route params: {{route.params}}</pre> 
 
     This is the main page, where $scope.num is {{ num }} 
 
     <ul> 
 
     <li ng-repeat="num in [0,1,2,3, 'zebra']"> 
 
      <button ng-click="goTo(num)">{{ num }}</button> 
 
     </li> 
 
     </ul> 
 
    </script> 
 
    
 
    <script type="text/ng-template" id="second.html"> 
 
     <pre>route params: {{route.params}}</pre> 
 
     This is the second page, where $scope.num is {{ num }} 
 
     <br> 
 
     <button ng-click="goHome()">Home</button> 
 
    </script> 
 
    </body> 
 
</html>

ли что-нибудь выскочит на вас?