Angular Пользовательский интерфейс: Неизвестный поставщик: dialogProvider
Я пытаюсь реплицировать следующий пример пользовательского интерфейса Angular простого диалога с помощью кнопки закрытия. https://github.com/angular-ui/bootstrap/blob/master/src/dialog/README.md.
Тем не менее, я не могу получить параметр dialog
, который должен быть правильно введен в мой контроллер диалога.
Контроллеры выглядят ниже (используя CoffeScript)
angular.module('myApp', ['ui.bootstrap'])
angular.module('myApp').controller 'MyController', ($dialog, $scope) ->
$dialog.dialog().open('dialogTemplate', 'DialogController')
angular.module('myApp').controller 'DialogController', ['$scope', 'dialog', ($scope, dialog) ->
$scope.close = -> dialog.close()
]
Смотрите Plunker для живой версии:
http://plnkr.co/edit/ejKh7w8Sk9H7Nz3rXhdc?p=preview
Angular дает следующую ошибку:
Unknown provider: dialogProvider <- dialog
Любые идеи о том, как dialog
-параметр может быть введен в DialogController
, как видно из примера документов, упомянутого выше? Я подозреваю, что это может иметь какое-то отношение к CoffeeScript, так как я довольно новичок в этом языке, но это кажется совершенно правильным, когда я смотрю на скомпилированный вывод.
Ответы
Ответ 1
У меня была аналогичная проблема, и я пытался найти решение.
Я ожидал два дополнительных аргумента для моего контроллера; ..., selectedView, dialog)
. Казалось, что мой диалог содержит правильные аргументы, но у меня все еще есть ошибка в консоли.
Проблема заключалась в том, что я дважды ссылался на контроллер;
- При открытии моего диалога:
dialog.open('template', 'myController')
- В моем
template
файле: section(ng-controller='myController')
Удаление (2) разрешило проблему, поскольку код не был вызван кодом диалога, который предоставил мой аргумент selectedView
и аргумент dialog
по умолчанию.
Надеюсь, что это поможет кому-то.
Ответ 2
Поставщик диалога называется $dialog
(s. dialog.js). Поэтому вы должны назвать введенное значение $dialog
, как вы сделали правильно в MyController.
angular.module('myApp').controller 'DialogController', ['$scope', '$dialog', ($scope, $dialog) ->
$scope.close = -> dialog.close()
]
→ Plunker
Примечание. Когда вы определяете свои зависимости как строки, аргументы контроллера можно назвать по своему усмотрению:
... ['$scope', '$dialog', (myscope, mydialog) -> ...
Ответ 3
Kristofer Sommestad находится прямо здесь. но у меня такая же проблема. Проблема была в старой версии ui-bootstrap-tpls
(например, версии 0.11.0) не поддерживает $dialog
.so использует новую версию ui-bootstrap-tpls
.