2015-10-29 6 views
0

У меня есть Угловая структура Я строю, что я пытаюсь сделать маршрутизатор агностиком, я хотел бы иметь возможность использовать любой маршрутизатор. До сих пор я тестировал его с маршрутизатором ng, и он работает нормально, но когда я пытаюсь использовать UI-Router, я получаю ошибку инжектора. Я не уверен, помещал ли я его в неправильный модуль, или если это более глубокая проблема. Структура передает маршрут или состояние, в зависимости от того, как я настроил директиву Framework. Я ввел UI-Router в свой основной модуль и ввел $ stateProvider в свой контроллер, который должен его использовать. Я в тупике. Любая помощь будет принята с благодарностью. Вот основной модуль:Угловой инжектор интерфейса маршрутизатора Ошибка в моей структуре

(function() { 
"use strict"; 

    angular.module("app", ["ptFramework", "ui.router", "ngStorage", "ui.bootstrap"]); 
})(); 

Здесь структура модуля:

(function() { 
"use strict"; 
angular.module("ptFramework", [,"ptMenu", "ptDashboard"]); 

})();

Здесь структура контроллера:

(function() { 
"use strict"; 

angular.module("ptFramework").controller("ptFrameworkController", 
['$scope', '$window', '$timeout', '$rootScope', '$stateProvider', 
    function ($scope, $window, $timeout, $rootScope, $stateProvider) { 

     $scope.isMenuVisible = true; 
     $scope.isMenuButtonVisible = true; 
     $scope.isMenuVertical = true; 

     $scope.$on('pt-menu-item-selected-event', function (evt, data) { 
      $scope.stateString = data.state; 
      $stateProvider.go(data.state); 
      checkWidth(); 
      broadcastMenuState(); 
     }); 

     $scope.$on('pt-menu-orientation-changed-event', function (evt, data) { 
      $scope.isMenuVertical = data.isMenuVertical; 
      $timeout(function() { 
       $($window).trigger('resize'); 
      }, 0); 
     }); 

     $($window).on('resize.ptFramework', function() { 
      $scope.$apply(function() { 
       checkWidth(); 
       broadcastMenuState(); 
      }); 
     }); 
     $scope.$on("$destroy", function() { 
      $($window).off("resize.ptFramework"); // remove the handler added earlier 
     }); 

     var checkWidth = function() { 
      var width = Math.max($($window).width(), $window.innerWidth); 
      $scope.isMenuVisible = (width >= 768); 
      $scope.isMenuButtonVisible = !$scope.isMenuVisible; 
     }; 

     $scope.menuButtonClicked = function() { 
      $scope.isMenuVisible = !$scope.isMenuVisible; 
      broadcastMenuState(); 

     }; 

     var broadcastMenuState = function() { 
      $rootScope.$broadcast('pt-menu-show', 
       { 
        show: $scope.isMenuVisible, 
        isVertical: $scope.isMenuVertical, 
        allowHorizontalToggle: !$scope.isMenuButtonVisible 
       }); 
     }; 

     $timeout(function() { 
      checkWidth(); 
     }, 0); 

    } 
]); 

})();

Как вы можете видеть, я ввел $ stateProvider как в минимальный массив, так и в функцию. Я не понимаю, почему я получаю эту ошибку

Вот это rote.config, где я использую его:

 "use strict"; 
angular.module('app').config([ 
    '$stateProvider', function ($stateProvider) { 

     $stateProvider 
      .state('dashboard', 
      { 
       url: "/dashboard", 
       template: "<h1>dashboard</h1>" 
      }); 

Любой вклад будет высоко оценен.

Thanks, John.

ответ

1

В контроллере:

$stateProvider.go(data.state); 

должно быть

$state.go(data.state); 

Как следствие, вводят $state вместо $stateProvider.

+0

Спасибо, я всегда, хотя вам нужно было сделать $ stateProvider.state.go. И я, очевидно, неправильно понял свой синтаксис. Спасибо за помощь. – Guyute

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