如何将angularjs范围变量值作为FormName传递给ng-click param并获取FormName。$ valid和FormName。$ dirty view

时间:2016-07-07 19:14:56

标签: jquery angularjs asp.net-mvc-4

如何将范围变量作为ng-click参数的 FormName 传递给{em> angularjs 中的FormName.$validFormName.$dirty

示例:



var myApp = angular.module('myApp', []);
myApp.controller('Main', ['$scope',
  function($scope) {
    $scope.FormName = 'FormNameValidation';
    $scope.showFormValidation = function(statusValid, statusDirty) {
      console.log(statusValid, statusDirty);
      $scope.FormNameValidationStatus = statusValid;
      $scope.FormNameDirtyStatus = statusDirty;
    }
  }
]);

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='myApp' ng-controller="Main">
  <form name="MainFormName" novalidate>
    <button type="button" ng-click="showFormValidation(FormName.$valid, FormName.$dirty)">Click</button>
    <form name="FormNameValidation" novalidate>
      <div class="col-sm-6">
        <div class="form-group" ng-class="{ 'has-error' : FormNameValidation.type.$invalid  }">
          <label class="col-sm-4 red" for="form-field-1-1">Type</label>
          <div class="col-sm-8" ng-class="{ 'has-error' : type.$invalid  }">
            <select convert-number ng-required=&#39;true&#39; class="form-control" id="type" name="type" ng-model="Type" ng-disabled="1 == 0">
              <option value=""></option>
              <option value="1">A</option>
              <option value="2">B</option>
            </select>
            <p ng-show="FormNameValidation.inctype.$error.required" class="help-block col-xs-12 col-sm-reset inline">Type is Required</p>
          </div>
        </div>
      </form>
      {{FormNameValidationStatus}} {{FormNameDirtyStatus}}
    </form>
  </div>
&#13;
&#13;
&#13;

输出:

  

undefined undefined

1 个答案:

答案 0 :(得分:1)

有几个问题......

首先,HTML5不支持嵌套表单元素,但使用ng-form指令时使用angular。

<form name="FormNameValidation" novalidate></form>

变为

<ng-form name="FormNameValidation" novalidate></ng-form>

其次,您只需在标记中命名您的表单。

<form name="MainFormName" novalidate>

变为

<form name="FormName" novalidate>

这将您的控制器功能简化为:

$scope.showFormValidation = function(statusValid, statusDirty) {
   $scope.FormNameValidationStatus = statusValid;
   $scope.FormNameDirtyStatus = statusDirty;
};

您的HTML中也有不匹配的打开/关闭代码。

这是一个有效的django-registration-redux