AngularJS : ng-disabled 是否删除输入值?

AngularJS : Does ng-disabled remove input value?

标题说明了一切... 我一直在阅读 Whosebug 和 the documentation 上的几篇文章,但我还没有找到令人满意的解释。

如果ng-disabled被激活,是否删除了标签内的输入值?

让我举个例子。

<form method="POST" name="form" action="">
    <select ng-model="model[1]"  
            ng-options="i for i in fc.items[1]" 
            ng-disabled="true">
    </select>
    <select ng-model="model[2]" 
            ng-options="i for i in fc.items[2]" 
            ng-disabled="false">
    </select>
    <input type="submit" value="Next"/>
</form>

输入值为results[2]:number:1。 (number:1 是预期结果)。

当我删除 ng-disabled 时,结果是 results[1]:number:1 results[2]:number:1

我即将得出 ng-disabled 影响输入值的结论,但我想知道这里是否有人知道如何获取所有输入值(如果可能的话)。

没有

禁用输入只是使其不可用不可点击。该值仍然存在。

您的值未发送,因为 form 中禁用的元素将不会提交。


来自 W3C Input disabling:

A disabled input element is unusable and un-clickable.

The disabled attribute can be set to keep a user from using the element until some other condition has been met (like selecting a checkbox, etc.). Then, a JavaScript could remove the disabled value, and make the element usable.

Tip: Disabled input elements in a form will not be submitted.

不,它根本不删除输入值。它只是使输入无法访问。 ng-disabled 指令只是 add/remove disabled 基于传递给它的表达式的属性。

ng-disabled="expression"

ngDisabled API 更远见here. Internally it calls attr.$set(attrName, !!value), which decides wheather to add/remove attribute from DOM element behind the scene from this method(Source Code).