Только что начался на AngularJS, и до сих пор это было непростое испытание.Угловой неизвестный поставщик при попытке получить константу из другого модуля
Моя проблема сегодня заключается в том, что я пытаюсь настроить контроллер через переменную в URL-адресе. Я не хочу, чтобы «реальный» контроллер должен был знать, откуда пришел данный параметр, если он есть. Поэтому главный контроллер приложения отвечает за получение параметра от URL-адреса и настройку константы, которую будет использовать «реальный» контроллер.
Для меня, я не вижу, что я делаю неправильно в инициализации. Любая помощь будет высоко оценена (в том числе и то, что стандартные методы для устранения неполадок такого рода проблем :))
Вот HTML:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<!-- the base tag is required for th Angular.js $location.search() function to work correctly -->
<base href='/' />
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script>
<script>
angular.module("myController.constants", []);
angular.module("myApp", ["myController", "myController.constants"], function($locationProvider) {
$locationProvider.html5Mode(true);
})
.controller("myAppCtrl", ['$scope', '$location', function ($scope, $location) {
var searchObject = $location.search();
angular.module("myController.constants").constant('myConstant', searchObject['theConstant']);
}]);
</script>
<script src="js/controllerExample.js"></script>
</head>
<body ng-controller="myAppCtrl">
<div ng-controller="myControllerCtrl">
<p>The constant is {{theConstant}}</p>
</div>
</body>
</html>
Вот это JS для контроллера:
angular.module("myController", ["myController.constants"])
.controller("myControllerCtrl", ['$scope', 'myConstant', function ($scope, myConstant) {
$scope.theConstant = myConstant;
}]);
с выше коде, я получаю сообщение об ошибке
Ошибка: [$ инжектор: unpr] Неизвестный поставщик: myConstantProvider < - myConstant < - myControllerCtrl
Спасибо!
Я мог ошибаться, но я не думаю, что вы можете объявить модуль внутри объявления контроллера. – Komo
myConstant не существует. Вы должны иметь фабрику/службу/значение, созданную с этим именем, прежде чем вы сможете ввести ее где-нибудь. – ribsies
Контроллеры, определяющие константы для других контроллеров, вероятно, не такая хорошая идея. По крайней мере, вы сделаете это ценным. Но, как сказал @Komo, он не знает, будет ли определение таких вещей, как это, сделать его в инжектор. Лучше всего использовать сервис для такого рода общения. – Cerad