什么是减少angularjs中表单元素属性重复的最佳方法?

时间:2016-09-12 21:03:12

标签: angularjs

我正在设计一个AngularJS 1.5.x应用程序,每个表单都有很多表单和很多字段。我发现我重复了很多属性,例如:

<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 个答案:

答案 0 :(得分:1)

有很多方法。看看这个图书馆http://angular-formly.com/。在我的项目中,我只在复杂的情况下使用普通输入和编写指令,比如2个字段控件。或卡片有效期等特殊领域。

<强>更新

好的,请看看这个。 Angular: better form validation solution

你有3个解决方案:

  1. 按原样存储属性。
  2. 在指令中存储一组常用的属性。或者使用利用属性数组的指令。就像我的例子中的验证指令一样。
  3. 使用带有翻译的指令来使用第1和第2种方法。因此,您可以在一个位置交换元素位置(例如标签,输入控件,错误提示)。此外,您可以轻松地在此指令上创建类似... preset的属性,并在其中存储属性预设。
  4. 因此,正如我已经说过的,有很多方法可以减少属性重复次数。