2017-02-22 42 views
0

標題說明了一切... 我一直在閱讀Stackoverflow以及the documentation的幾篇帖子,但是我還沒有找到令人滿意的解釋。AngularJS:ng-disabled是否刪除輸入值?

如果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:1results[2]:number:1

我即將結束的ng-disabled影響輸入值,但我想知道是否有人在這裏知道如何讓所有的輸入值(如果可能的話)。

回答

3

禁止輸入只是使它無法使用無法點擊。價值依然存在。

您的價值未發送,因爲form中的禁用元素不會被提交。


從W3C Input disabling

禁用的輸入元件是不可用的和未點擊。

disabled屬性可以被設置爲從使用 元件保持用戶直到某些其它條件被滿足(例如 選擇複選框等)。然後,JavaScript可以刪除 禁用的值,並使該元素可用。

提示:表單中禁用的輸入元素將不會被提交。

1

不,它根本不會刪除輸入值。它只是使輸入無法訪問。 ng-disabled指令只是根據傳遞給它的表達式添加/刪除disabled屬性。

ng-disabled="expression" 

看那ngDisabled API更多的視覺here。它在內部調用attr.$set(attrName, !!value),它決定是否從該方法的場景後面的DOM元素添加/刪除屬性(Source Code)。