javascript
  • angularjs
  • 2016-03-03 75 views 2 likes 
    2

    我已经使用模式实现了表单。表单可以有'创建'或'编辑'模式。根据不同的模式,它会在布局的另一个地方显示一些div。 Div内容是相同的,它是输入和验证消息。Angular验证消息不适用于ng-show和两个输入

    这里是简化的例子。

    查看:

    <div ng-app="myApp"> 
        <div ng-controller="MyCtrl"> 
        <form name="editForm"> 
        <div ng-show='mode == "Edit"'> 
         <div class="form-group" ng-class="{true:'has-error',false:''}[editForm.FirstName.$valid === false && editForm.FirstName.$dirty]"> 
          <input type="text" ng-model="foo" ng-maxlength="5" name="foo" required /> 
          <div class="help-block" ng-messages="editForm.foo.$error" ng-if="editForm.foo.$dirty"> 
          <p ng-message="required">Required</p> 
          <p ng-message="maxlength">Too long</p> 
          </div> 
         </div> 
        </div> 
        <div ng-show='mode == "Create"'> 
         <div class="form-group" ng-class="{true:'has-error',false:''}[edit.foo.$valid === false && edit.foo.$dirty]"> 
          <input type="text" ng-model="foo" ng-maxlength="5" name="foo" required /> 
          <div class="help-block" ng-messages="editForm.foo.$error" ng-if="editForm.foo.$dirty"> 
          <p ng-message="required">Required</p> 
          <p ng-message="maxlength">Too long</p> 
          </div> 
         </div> 
        </div> 
        </form> 
         <div> 
         Mode: {{mode}} <br> 
         Value: {{foo}} <br> 
         Is form valid: {{editForm.foo.$valid}} <br> 
         </div> 
        </div> 
    </div> 
    

    控制器:

    var myApp = angular.module('myApp',['ngMessages']); 
    
    myApp.controller('MyCtrl',function($scope){ 
        $scope.mode = 'Edit'; 
    }); 
    

    Here's JSFiddle with working example

    问题是 - 验证消息只有在显示最后一个输入时才能正常工作。在编辑模式下 - 即使它相同 - 消息显示不正确。

    +0

    我不明白,有什么问题......你的问题是什么? –

    +0

    在编辑模式下,验证消息不显示。在此处查看演示 - http://jsfiddle.net/9ctgn364/7/ - 在两种模式之间切换并尝试在两种模式下输入长度超过5的字符串。 – Landeeyo

    回答

    1

    而不是ng-show使用ng-if指令。

    ng-show导致浏览器到ng-show表达式评估为false在元件上呈现两个div元素,具有ng-hide类。

    ng-if另一方面导致div元素如果ng-if表达式为false则不会呈现。

    相关问题