Angular UI:未知提供者:dialogProvider

时间:2013-04-25 22:42:11

标签: angularjs coffeescript angular-ui angular-ui-bootstrap

我正在尝试使用关闭按钮复制以下Angular UI示例的简单对话框。 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有关,因为我对这种语言还不熟悉,但是当我查看编译后的输出时,这似乎是正确的。

3 个答案:

答案 0 :(得分:17)

我遇到了类似的问题,并且正在努力寻找解决方案。

我期待我的控制器有两个额外的参数; ..., selectedView, dialog)。它似乎为我的对话框提供了正确的参数,但我仍然在控制台中出错。

问题是我两次引用控制器;

  1. 打开对话框时:dialog.open('template', 'myController')
  2. 在我的template文件中:section(ng-controller='myController')
  3. 删除(2)解决了问题,因为对话框代码没有调用它,它提供了我的selectedView参数和默认的dialog参数。

    希望能有所帮助。

答案 1 :(得分:0)

对话框提供程序名为$dialog(s。dialog.js)。因此,您必须像在 MyController 中正确执行的那样命名注入值$dialog

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

Plunker

注意:在将依赖项定义为字符串时,可以根据需要命名控制器参数:

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

答案 2 :(得分:0)

Kristofer Sommestad 就在这里。但我遇到了同样的问题。问题是ui-bootstrap-tpls的某些旧版本(如版本0.11.0)不支持$dialog。因此使用了ui-bootstrap-tpls的新版本。