2017-06-20 56 views
0

我有一個作爲ng-repeat的結果生成的表單字段的列表。因此我用的是重複循環的{{$指數}}來命名這導致領域,即`:訪問包含數字的angularjs表單字段

<input name="myInput0"> 
<input name="myInput1"> 
<input name="myInput2"> 
... 

等。現在我試圖從形式訪問域$valid屬性以標準的方式,即myForm.myInput{{$index}}.$valid,它解決了例如myForm.myInput0.$valid我明白不會工作,因爲它正在訪問一個變量,數字將不被允許。

然而,我然後試圖訪問它與myForm['myInput{{$index}}'].$valid,例如, myForm['myInput0'].$valid我認爲可以工作,但仍然沒有。當它包含數字時,有沒有辦法訪問表單域? (或其他非法字符像連字符)?

e:我正在使用angularjs 1.2,這可能解釋爲什麼這不起作用。有沒有人知道前1.3角的解決方法?

+0

讓他們事物'myForm.myInput0。$ valid',即使它以數字結尾 –

+0

你可以添加一個plunker或jsfiddle嗎? –

+0

我剛剛意識到,它可能是我使用的angularjs的版本,我被困在1.2.19上,我相信我想要做的只是在1.3+中可用? – ptr

回答

0

正確的表達看起來像myForm['myInput' + $index].$valid

+0

我是否認爲這在angularjs 1.2中不起作用?我最初在這個問題上忘了提到這一點。 – ptr

+0

是的,你說得對。這在1.3+以上。 1.2不支持輸入的動態名稱。 – xReeQz

+0

公平的一個,你回答了我最初問的問題,如果沒有人有明天的解決辦法,我會檢查這是答案 – ptr

0

我能想到的解決方法有兩種方式。

第一種選擇:

放在每個輸入NG-變化和手動驗證它。

第二個選項:

檢索所有投入要素,interate在每個並手動驗證

您可以從我知道它是可以做到這樣的本

var inputs = $document[0].querySelectorAll('#rankingForm input');