2013-04-25 14 views
15

Próbuję skopiować następujący przykład interfejsu Angular UI prostego okna dialogowego za pomocą przycisku zamykania. https://github.com/angular-ui/bootstrap/blob/master/src/dialog/README.md. Jednak nie mogę uzyskać prawidłowo wprowadzonego parametru dialog do mojego kontrolera dialogowego.Angular UI: Nieznany dostawca: dialogProvider

Regulatory wygląda jak poniżej (używając coffeescript)

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() 
] 

Zobacz Plunker dla wersji na żywo: http://plnkr.co/edit/ejKh7w8Sk9H7Nz3rXhdc?p=preview

kątowa daje mi następujący błąd:

Unknown provider: dialogProvider <- dialog 

jakieś pomysły o tym, jak można wprowadzić dialog-parametr do DialogController, jak widać w t on docs przykład, o którym mowa powyżej? Podejrzewam, że może to mieć coś wspólnego z CoffeeScriptem, ponieważ jestem całkiem nowy w tym języku, ale wydaje mi się całkiem słuszny, gdy patrzę na skompilowane wyjście.

Odpowiedz

17

miałem podobny problem i zmagała się znaleźć rozwiązanie.

Spodziewałem się dwóch dodatkowych argumentów do kontrolera; ..., selectedView, dialog). Wygląda na to, że mój dialog zawiera właściwe argumenty, ale nadal mam błąd w konsoli.

Problem polegał na tym, że dwukrotnie odwoływałem się do kontrolera;

  1. Kiedy moje okno otwarcia: dialog.open('template', 'myController')
  2. W moim template pliku: section(ng-controller='myController')

Demontaż (2) rozwiązać ten problem, ponieważ nie została wywołana przez kod dialogowym, które dostarczyły moje selectedView argument i domyślny argument dialog.

Nadzieję, że pomaga komuś.

+1

Nie wiesz, dlaczego odrzucono wniosek - to jest poprawna odpowiedź. Odpowiedź Reto jest niepoprawna. – mackmack

+0

Dobrze wyjaśnione! – mthmulders

+0

Niewiarygodnie przydatne. Wielkie dzięki! – Hagen

0

Operator okna dialogowego ma nazwę $dialog (patrz dialog.js). Musisz więc podać wstrzykniętą wartość: $dialog, tak jak zrobiłeś to poprawnie w MyController.

angular.module('myApp').controller 'DialogController', ['$scope', '$dialog', ($scope, $dialog) -> 
    $scope.close = -> dialog.close() 
] 

Plunker

Uwaga: Jak definiować zależności jak struny argumenty kontrolera można nazwać jak chcesz:

... ['$scope', '$dialog', (myscope, mydialog) -> ... 
+1

To nie jest poprawne. Okno dialogowe $ jest wtryskiwaczem kątowym, okno dialogowe jest pojedynczym obiektem bieżącego okna dialogowego. ['$ scope', '$ dialog', (myscope, mydialog) również nie ma sensu, ponieważ ta konstrukcja jest używana tylko w celu uniknięcia problemów z minifikacją. zobacz odpowiedź Kristofera na możliwe rozwiązanie. – mackmack

0

Kristofer Sommestad jest tutaj. ale mam ten sam problem.Problem była starsza wersja ui-bootstrap-tpls (jak wersja 0.11.0) nie obsługuje $dialog .to używana nowa wersja ui-bootstrap-tpls.

Powiązane problemy