【问题标题】:How to access unknown form in controller?如何访问控制器中的未知表单?
【发布时间】:2017-09-21 01:46:39
【问题描述】:

我有超过三个动态生成的表单。我需要迭代控制器中表单的所有错误。我正在使用模型分配表单名称。

<form name="{{myForm}}" novalidate>     
<input type="text" ng-model="username" name="username" required/>
<span ng-show="(submit && myForm.username.$error.required)">
    <span>Required</span>
</span>

angular.module("myApp",[]).controller("myCtrl",function($scope) {
$scope.myForm= "validateForm";      
console.log("form" + $scope.myForm)
});

我想要的是当我控制台 $scope.myForm 它应该打印表单对象但发生的事情是它只打印 "validateForm" 字符串。

【问题讨论】:

  • 试试这个console.log("form" + $scope[$scope.myForm])
  • $scope.myForm 应该是$scope.myForm = angular.element('[name="validateForm"]')
  • @RichardMauritz OP 正在寻找验证对象...不是元素。控制器中也不应该有 dom 搜索代码。这是一种非常落后的角度工作方法。而angular.element 不支持该选择器
  • console.log("form" + $scope[$scope.myForm]) 我在控制台中未定义。请提供一些其他解决方案

标签: javascript jquery angularjs html


【解决方案1】:

您最终需要$scope.validateForm,因为"validateForm" 是您在编译name="{{myForm}}" 后为表单指定的名称:

可以从$scope[$scope.myForm]得到它

请注意,只有在第一次编译视图并且在编译过程中创建了验证对象之后,才能在控制器中使用它

您当前所做的只是记录您在上一行分配的原语

【讨论】:

  • 嗨,它不起作用我在控制台中未定义
  • 实际上需要使用事件或监视...控制器在视图编译之前运行,然后验证对象被初始化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 2020-03-01
  • 2013-11-03
相关资源
最近更新 更多