【问题标题】:Can't access form from inside AngularJS controller无法从 AngularJS 控制器内部访问表单
【发布时间】:2021-10-08 13:10:31
【问题描述】:

我正在尝试从 AngularJS 控制器内部手动重置表单,但我无法使用 $scope 或使用 controllerAs 访问它。当我登录$scope.SupportForm 时,它返回undefined

HTML

<form name="supportForm" id="supportForm" novalidate> 
  
    <label for="message">Message</label>
    <textarea name="message" id="message" model="$ctrl.formData.message" maxlength="5000" required></textarea>   

     <button type="submit" data-ng-click="$ctrl.submitForm($ctrl.formData)" data-ng-disabled="supportForm.$invalid">              
         Request support
     </button>

</form>

控制器

function GeneralSupportController($scope, $state, $timeout, $stateParams, SupportService, $uibModal) {

    var vm = this;
    vm.formData = {};

    vm.submitForm = submitForm;

    function submitForm(data) {
         console.log('$scope.supportForm : ', $scope.supportForm)
    }
}

我也尝试将 ngModel 添加到表单中,但它也不起作用。

问题

知道为什么没有将表单分配给范围吗?

【问题讨论】:

    标签: angularjs controller


    【解决方案1】:

    表单已分配给代码中的范围。 (https://plnkr.co/edit/7eYvApaW36DrRmvK >> 它有效)我猜实际上你有以下内容:

    <div ng-if="...">
      <form name=...
    

    在这种情况下,表单被分配给 ng-if 不是控制器范围的嵌套范围。您有几种解决方案:

    • 通过表单提交功能$ctrl.submitForm(supportForm...在您有多个表单时很有用
    • 将表单放入控制器&lt;form name="$ctrl.supportForm"当你有一个表单时就这样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多