2017-07-06 120 views
0

的一部分,我採用了棱角分明1.5.9AngularJS - 驗證表單

我有一個大表格,我至極散落通過不同的引導手風琴。

當表單中出現錯誤時,我希望能夠更改我手風琴的類別以顯示位於哪個位置的錯誤。

要在整個表單檢查錯誤,我可以檢查

myFormName.$error 

,並檢查錯誤的元素,我可以簡單地做

myFormName.myInputName.$error 

但我不知道是否有是一種對多個元素一次執行此操作的方法,無需單獨檢查每個元素。

我首先想到的是像這樣改變我的投入名稱:

<input name="accordion1.fieldName"> 

但這並沒有給我預期的結果:我沒有myFormName.accordion1 $錯誤,實際上,。我甚至沒有myFormName.accordion1.fieldName,因爲我的數據實際上存儲在myFormName ['accordion1.fieldName']中,這幾乎沒用。

有沒有人找到這個問題的答案?我想我必須檢查每個領域,這是一個有點醜陋,和一個混亂維持每當我們添加/刪除領域...

也許有一個指令,那裏可以做到這一點,但作爲一個非英語母語的人,在這種情況下,我找不到最重要的關鍵詞...

謝謝!

回答

2

一種方法是窩與ng-form directive

<form name=form1> 
    <div ng-form=set1> 
     <input name=input1 /> 
     <input name=input2 /> 
    </div> 
</form> 

{{form1.set1.$error}} 
+0

這正是我需要的,謝謝! –

0

您可以使用諸如'accordion1_'之類的前綴來命名字段,然後添加將過濾字段的控制器函數。

ctrl.fieldGroup = function(form, fieldPrefix) { 

    var fieldGroup = {}; 

    angular.forEach(form, function(value, key) { 

     if (key.indexOf(prefix) === 0) { 
      fieldGroup[key] = value; 
     } 

    }); 

    return fieldGroup; 

} 

然後ctrl.fieldGroup('accordion1')將返回一個對象與其上的appriopriate字段。您可以進一步擴展該功能,以將合計$error屬性添加到生成的fieldGroup對象中。

+0

這就是我會去的,如果我沒有更好的解決方案,但@ georgeawg的解決方案,我就不用在添加任何代碼我控制器,所以我可能會去他的方法^^' –