【发布时间】:2017-06-18 20:06:36
【问题描述】:
我正在以推荐的方式使用 Angular 1.5 Material Design $mdDialog,使用 controllerAs: "dialog"。在模板中,我有一个表单:<form name="fooForm"。在模板中,我可以毫无问题地访问表单,例如ng-disabled="fooForm.$invalid || fooForm.$submitted".
但是如何从$mdDialog 控制器中访问该表单?根据我的阅读,我希望能够做到这一点:
const doFoo = () => {
if (this.fooForm.$dirty) {
这里this 是对话控制器。
但我收到一个错误:TypeError: Cannot read property '$dirty' of undefined。果然,如果我在代码中设置断点,控制器就没有fooForm 属性。
我也尝试过使用$scope,但是当我在代码中设置断点时,$scope 也没有fooForm 属性。
这是我的对话模板:
<md-dialog aria-label="FooBar">
<md-toolbar>
<div class="md-toolbar-tools">
<h2>FooBar</h2>
<span flex></span>
<md-button class="md-icon-button" ng-click="dialog.cancel()">
<md-icon>close</md-icon>
</md-button>
</div>
</md-toolbar>
<form name="fooForm" ng-submit="dialog.ok()" novalidate>
<md-dialog-content>
<div layout="column" layout-padding>
<h2 class="md-headline">Foo</h2>
<div layout="row" layout-xs="column">
...
</div>
</md-dialog-content>
<md-dialog-actions>
<md-button class="md-primary" type="submit" ng-disabled="fooForm.$invalid || fooForm.$submitted">
OK
</md-button>
<md-button ng-click="dialog.cancel()">
Cancel
</md-button>
</md-dialog-actions>
</form>
</md-dialog>
如何从对话框控制器访问$mdDialog 中的表单?
【问题讨论】:
-
$scope.fooForm ... 像往常一样
-
啊,所以
$scope仍然与我的控制器不同?我认为使用controllerAs以前在$scope中的东西现在在我的控制器中。我想那部分仍然让我有点困惑。
标签: javascript angularjs forms angular-material mddialog