我正在尝试使用关闭按钮复制以下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有关,因为我对这种语言还不熟悉,但是当我查看编译后的输出时,这似乎是正确的。
答案 0 :(得分:17)
我遇到了类似的问题,并且正在努力寻找解决方案。
我期待我的控制器有两个额外的参数; ..., selectedView, dialog)
。它似乎为我的对话框提供了正确的参数,但我仍然在控制台中出错。
问题是我两次引用控制器;
dialog.open('template', 'myController')
template
文件中:section(ng-controller='myController')
删除(2)解决了问题,因为对话框代码没有调用它,它提供了我的selectedView
参数和默认的dialog
参数。
希望能有所帮助。
答案 1 :(得分:0)
对话框提供程序名为$dialog
(s。dialog.js)。因此,您必须像在 MyController 中正确执行的那样命名注入值$dialog
。
angular.module('myApp').controller 'DialogController', ['$scope', '$dialog', ($scope, $dialog) ->
$scope.close = -> dialog.close()
]
注意:在将依赖项定义为字符串时,可以根据需要命名控制器参数:
... ['$scope', '$dialog', (myscope, mydialog) -> ...
答案 2 :(得分:0)
Kristofer Sommestad 就在这里。但我遇到了同样的问题。问题是ui-bootstrap-tpls
的某些旧版本(如版本0.11.0)不支持$dialog
。因此使用了ui-bootstrap-tpls
的新版本。