2016-09-12 78 views
0

我正在設計一個AngularJS 1.5.x應用程序,它會爲每個表單提供大量的表單和大量的字段。我發現,我不停地重複屬性有很多,例如:什麼是減少angularjs中表單元素屬性重複的最佳方法?

<div class="form-group"> 
    <label class="control-label" for="thing.Field1">Field 1</label> 
    <input class="form-control ctrl-md" 
      type="text" 
      id="thing.Field1" 
      name="Field1" 
      ng-model="thing.Field1" 
      ng-maxlength="30" 
      required 
      uib-tooltip="Field 1 is required" 
      tooltip-placement="right" 
      tooltip-trigger="none" 
      tooltip-is-open="thingForm1.Field1.$invalid && showValidationErr('Thing1')" 
      ng-blur="fieldBlur('Thing1')">  
</div> 

我試圖用一個指令+模板,它的工作或多或少,但它似乎非常複雜和緩慢的。

有沒有一種很好的方法使input可重複使用?或者我應該習慣於在編輯器中進行大量的複製+粘貼操作?

除了減少重複編碼之外,如果我想在所有字段上更改工具提示位置,則可以更改一個地方的所有元素,這是非常好的。

回答

1

有很多方法。看看這個庫http://angular-formly.com/。在我的項目中,我只使用普通輸入和寫入指令來處理複雜的情況,例如2場控制。或像卡片有效期的特殊領域。

UPDATE

好吧,看看這個PLS。 Angular: better form validation solution

你有3個解決方案:

  1. 要保存您的屬性,因爲它是。
  2. 在一個指令中存儲一組通常一起使用的屬性。或者使用利用數組屬性的指令。像我的例子中的驗證指令一樣。
  3. 使用指令與transclusion利用第1和第2種方法。所以你可以在一個地方交換元素的位置(如標籤,輸入控件,錯誤提示)。另外,您可以輕鬆創建此指令的屬性,如preset,並將屬性預設存儲在該指令中。

因此,正如我已經告訴過的,有很多方法可以減少屬性重複次數。

+0

感謝您的回答。我看着Formly,我寧願這樣做1)不添加依賴關係,2)不將設計元素從HTML移動到JS。此外,除了減少重複編碼之外,如果我想更改工具提示位置,則可以在一個位置更改所有元素,這是非常好的。 (我會更新這個問題來添加這個。) – Pippin

+0

@Pippin,我已經更新了我的答案。 – Kindzoku

+0

謝謝@Kindzoku。我接受了答案,但無法贊成。 :(在玩過你提到的一些選項後,我決定堅持使用copypasta(實際上是編輯器代碼片段和自動代碼生成器),指令方法感覺太脆弱和緩慢 – Pippin

相關問題