#angularjs #angular-material #mddialog
#angularjs #angular-material #mddialog
Вопрос:
Я пытаюсь передать переменную с помощью диалоговой службы md, но она выдает ошибку неизвестного поставщика для диалоговой службы md
То, что я пробовал до сих пор, заключается в следующем —
$mdDialog.show({
controller: 'SignInModalController',
templateUrl: 'views/partials/signin_modal.html',
targetEvent: ev,
size: 'sm',
parent: angular.element(document.body),
locals: {
"login_cookies": cookies
}
})
Я пытаюсь передать этот локальный объект модальному контроллеру входа, который имеет следующий код — >
app.controller('SignInModalController', ['$scope', '$stateParams', '$location', '$mdDialog', 'Auth', '$mdToast', 'login_cookies',
function($scope, $stateParams, $location, $mdDialog, Auth, $mdToast, login_cookies) {
и после этого я получаю следующее сообщение об ошибке в консоли — >
Error: [$injector:unpr] Unknown provider: login_cookiesProvider <- login_cookies <- SignInModalController
http://errors.angularjs.org/1.4.3/$injector/unpr?p0=login_cookiesProvider%20<- login_cookies%20<- SignInModalController
Также файл модального контроллера входа в систему лениво загружается во время начальной загрузки приложения angular следующим образом — >
.state('app', {
abstract: true,
url: '/app?feedback',
views: {
'': {
templateUrl: 'views/layout.html'
},
'aside': {
templateUrl: 'views/aside.html'
},
'content': {
templateUrl: 'views/content.html'
}
},
resolve: load([
'scripts/google_analytics.js',
'scripts/controllers/app/aside.js',
'scripts/controllers/app/navbar.js',
'scripts/controllers/app/reach_us.js',
'scripts/controllers/app/labs/filter.ctrl.js',
'scripts/controllers/app/signin_modal.js',
'scripts/controllers/app/feedback.js'])
})
Какие еще вещи я должен проверить, чтобы устранить эту ошибку?
Обновить
При установке точки останова в контроллере диалогового окна, как только я открываю диалоговое окно, я получаю следующий результат —
Как вы можете видеть, переданный массив ( list_cookies
) действительно имеет значение, и все же в консоли я получаю эту ошибку —
Есть предложения?
Комментарии:
1. Вы пробовали удалять кавычки:
locals: { login_cookies: cookies }
?2. Да, но это тоже не помогает
3. Одной из наших зависимостей в вашем SignInModalController является login_cookies. Вы объявили это где-нибудь еще в своем приложении? Именно на это жалуется сообщение неизвестного поставщика.
4. Вы когда-нибудь находили ответ на это?
5. Да, у меня был один и тот же контроллер, объявленный в двух состояниях с разными параметрами, поэтому, когда регистрировался второй контроллер, он выдавал ошибку
Ответ №1:
Поскольку я не могу прокомментировать последний комментарий deadman, это скорее продолжение того, как он определил / решил проблему.
Попробуйте удалить ng-controller в теге md-dialog. Я думаю, это потому, что при вызове $ mdDialog.покажите, что вы передали провайдеров, в данном случае, местных жителей. Однако, если у вас есть ng-controller в теге md-dialog, он объявляется без контекста локальных файлов.
Ответ №2:
Я думаю, проблема в том, что вы хотите внедрить dialogLocals
в свой SignInModalController
, а затем получить доступ к login_cookies
as dialogLocals.login_cookies
.
Итак, измените:
app.controller('SignInModalController', ['$scope', '$stateParams', '$location', '$mdDialog', 'Auth', '$mdToast', 'login_cookies', function($scope, $stateParams, $location, $mdDialog, Auth, $mdToast, login_cookies) {
Для:
app.controller('SignInModalController', ['$scope', '$stateParams', '$location', '$mdDialog', 'Auth', '$mdToast', 'dialogLocals', function($scope, $stateParams, $location, $mdDialog, Auth, $mdToast, dialogLocals) {
Затем получите доступ из вашего SignInModalController
как:
dialogLocals.login_cookies
Комментарии:
1. Когда я пытаюсь в качестве вашего ответа, я получаю
Unknown provider: dialogLocalsProvider <- dialogLocals <- myController
ошибку. Также я не смог найти ничего, связанного с вашим ответом в документах . Это проблема с версией? Если да, пожалуйста, укажите свою версию и, если возможно, поделитесь ссылкой на документацию.