javascript - 从 Angular $mdDialog 中访问表单

标签 javascript angularjs forms angular-material mddialog

我正在使用 Angular 1.5 Material Design $mdDialog按照推荐的方式,使用 controllerAs: "dialog" .在模板中我有一个表单:<form name="fooForm" .在模板中,我可以毫无问题地访问表单,例如ng-disabled="fooForm.$invalid || fooForm.$submitted" .

但是我如何从 $mdDialog 中访问该表单? Controller ?根据我的阅读,我希望能够做到这一点:

    const doFoo = () => {
        if (this.fooForm.$dirty) {

在这里this是对话框 Controller 。

但我得到一个错误:TypeError: Cannot read property '$dirty' of undefined .果然,如果我在代码中放置一个断点, Controller 就没有 fooForm属性(property)。

我试过使用 $scope同样,但是当我在代码中放置断点时 $scope没有fooForm属性(property)。

这是我的对话模板:

<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 中的表单来自对话 Controller ?

最佳答案

您需要将表单分配给 Controller 的范围。通过将表单名称从 fooForm 更改为 dialog.fooForm 来执行此操作。

<form name="dialog.fooForm" ng-submit="dialog.ok()" novalidate>

关于javascript - 从 Angular $mdDialog 中访问表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41990586/

相关文章:

angularjs - 如何在 AngularJS 应用程序中集成 Payumoney?

javascript - 使用 Javascript 根据 URL 哈希设置所选选项

javascript - :active selector后触发点击事件

javascript - 如何停止非事件 Iframe 中的 javascript ajax 请求?

javascript - WEB Socket 的 CORS 验证

javascript - 在 android Webview 中添加 ReactJS

javascript - AngularJS 应用程序组件(模块、工厂、 Controller )定义究竟是如何工作的?

javascript - AngularJS Accordion is-open 检查与 ng 重复

ruby-on-rails - Rails 'config.time_zone' 不适用于加载到 text_field 中的日期时间数据。使固定?

javascript - 我正在尝试验证 jsp 登录表单,我需要字段(标签)验证而不是警报消息