2016-01-27 2 views
0

Пожалуйста, обратите внимание на этот код, в котором необходим routeProvider для ввода страницы (n) .html в ng-view.Использование углового маршрутаProvider с контроллером

В дополнение к ошибке консоли:

unknown provider: $routeProviderProvider <- $routeProvider

Аргумент действовал routeIt это имя страницы, чтобы перейти к, Как я могу смешать условный переключатель с routeProvider.when для вызова страницы подходящий аргумент наиболее эффективным образом? Благодаря

(function() { 
 
    'use strict'; 
 
    angular 
 
     .module('appModule') 
 
     .controller('MainMenuCtrl', ['$scope', '$http', 'TogglerFactory', '$routeProvider', MainMenuCtrl]); 
 

 
    function MainMenuCtrl($scope, $http, Toggler, routeProvider) { 
 

 
     $http.get('models/mainMenu.json').then(
 
      function (response) { 
 
       $scope.menuItems = response.data; 
 
      }, 
 
      function (error) { 
 
       alert("http error"); 
 
      } 
 
     ) 
 

 
     function routeIt (page) { 
 
      routeProvider 
 
       .when('/page1', { 
 
        url: "/page1", 
 
        templateUrl: 'views/page1.html', 
 
        controller: 'Page1Ctrl' 
 
       }) 
 
       .when('/page2', { 
 
        url: "/page2", 
 
        templateUrl: 'views/page2.html', 
 
        controller: 'Page2Ctrl' 
 
       }) 
 
     } 
 

 
     $scope.itemClicked = function (item){ 
 
      Toggler.menuToggle(); 
 
      routeIt(item); 
 
     } 
 

 
    } 
 
})();

+0

Не имеет никакого смысла. Почему вы отклоняетесь от документированного способа использования маршрутизатора вместе с сервисом '$ location'? – charlietfl

+0

Просто мой мозговой дамп, чтобы придумать решение для моего ответа без ответа [link (] http://stackoverflow.com/q/35043417/5047454) –

+0

У маршрутизатора есть множество событий, на которые вы можете подписаться. Также новый вид означает новый экземпляр контроллера. Что такое проблема более высокого уровня, которую вы пытаетесь решить? – charlietfl

ответ

0

Поставщиков услуг не доступны для инъекций в фазе запуска (то есть в любом месте, но provider услуги и config блоков). Это можно сделать маршрут поставщика инъекционного и настроить его после конфигурации фазы,

app.config(function ($provide, $routeProvider) { 
    $provide.value('$routeProvider', $routeProvider); 
}); 

и контроллеры не являются лучшими местами для осуществления какой-либо логики (например, маршрут горячей замены).

0

Ok вы используете ваш routeProvider неправильно, то вы должны настроить маршруты внутри .config блоков

angular.module('myApp', []) 
.config(function($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/page1', { 
      url: "/page1", 
      templateUrl: 'views/page1.html', 
      controller: 'Page1Ctrl' 
     } 
}) 

Если вы хотите изменить URL вашего использования контроллера $location.path('/page1'); внутри контроллера.

+0

Не могли бы вы показать, как $ location.path используется в контроллере, пожалуйста? спасибо –

Смежные вопросы