У меня есть Угловая структура, которую я создаю, что я пытаюсь сделать маршрутизатор агностиком, я хотел бы иметь возможность использовать любой маршрутизатор. До сих пор я тестировал его с маршрутизатором 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>"
});
Любой вход был бы весьма признателен.
Спасибо, Джон.
В контроллере:
$stateProvider.go(data.state);
должно быть
$state.go(data.state);
Как следствие, введите $state
вместо $stateProvider
.