为什么在禁用输入字段时评估ng-pattern

时间:2015-03-23 09:58:22

标签: angularjs ng-pattern

为什么angular会在禁用输入字段时评估模式。 它的行为应该与隐藏输入字段时的行为相同吗?

检查这个小提琴, Fiddle for reference

<div ng-app>
    <div ng-controller="PatternTestCtrl">
        <form name="ngform">
            <label for="phone">Change the text to match the placeholder:</label><br/>
            <div>
                <input type="checkbox" ng-model="checkValue" />
            </div>
             used ng-pattern <input type="text" name="phone" ng-model="phone" ng-pattern="/^\d*$/" ng-disabled="!checkValue" maxlength="12" placeholder="555-555-5555"/>
            <div>Pattern validity : {{ngform.phone.$valid}}</div>
            <br>
            <div>
                used ng-if : <input type="text" name="dummyNum" ng-pattern="/^\d*$/" ng-model="dummyNum" ng-if="checkValue" />
            </div>    
        <div> ng-if input box validity : {{ngform.dummyNum.$valid}}</div>
        </form>
    </div>
</div>

附图供参考
input field is active

when it is disabled

1 个答案:

答案 0 :(得分:2)

ng-if从dom中删除元素,因此ng-pattern不会被评估。

ng-show/ng-hide,只是让元素不可见,因此ng-pattern仍会被评估。

ng-disableng-pattern是不同的指令,为什么要混合它们的功能。

我们在应用程序中实际上甚至在禁用的字段上进行了评估。所以我真的不明白两者应该混为一谈的原因。