15

我正在尝试复制以下带有关闭按钮的简单对话框的 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-parameter 注入的任何想法?DialogController我怀疑这可能与 CoffeeScript 有关,因为我对这种语言还很陌生,但是当我查看编译后的输出时,这似乎是正确的。

4

3 回答 3

18

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

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

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

  1. 打开我的对话框时:dialog.open('template', 'myController')
  2. 在我的template文件中:section(ng-controller='myController')

删除 (2) 解决了问题,因为对话框代码没有调用它,它提供了我的selectedView参数和默认dialog参数。

希望对某人有所帮助。

于 2013-06-13T19:09:14.757 回答
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) -> ...
于 2013-05-28T20:56:11.553 回答
0

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

于 2014-12-01T06:17:22.633 回答