当前位置: 首页 > 面试题库 >

如何使用Angular输出动态表单字段?

令狐珂
2023-03-14
问题内容

我想基于动态字段配置来呈现表单:

$scope.fields = [
    { title: 'Label 1', type: 'text', value: 'value1'},
    { title: 'Label 2', type: 'textarea', value: 'value2'}
];

这应该输出的行为类似于:

<div>
    <label>{{field.title}}<br />
        <input type="text" ng-model="field.value"/>
    </label>
</div>
<div>
    <label>{{field.title}}<br />
        <textarea ng-model="field.value" rows="5" cols="50"></textarea>
    </label>
</div>

简单的实现方法是使用if语句为每种字段类型呈现模板。但是,由于Angular不支持if语句,因此导致了指令的发展方向。我的问题是了解数据绑定的工作方式。指令的文档有点稠密和理论性。

我在这里尝试了一个简单的示例:http :
//jsfiddle.net/gunnarlium/aj8G3/4/

问题在于表单字段未绑定到模型,因此submit()中的$ scope.fields不会更新。我怀疑我的指令功能的内容是完全错误的… :)

展望未来,我还需要支持其他字段类型,例如单选按钮,复选框,选择等。


问题答案:

无论要尝试创建的指令如何,您遇到的第一个问题是在具有表单元素的表单中使用ng-repeat。ng-repeat如何创建新范围可能很棘手。

该指令创建新的作用域。

我也建议不要在部分模板中使用ngSwitch而不是使用element.html

<div class="form-row" data-ng-switch on="field.type">
    <div data-ng-switch-when="text">
        {{ field.title }}: <input type="text" data-ng-model="field.value" />
    </div>
    <div data-ng-switch-when="textarea">
        {{ field.title }}: <textarea data-ng-model="field.value"></textarea>
    </div>
</div>

由于ng-
repeat,这仍然给您带来在子范围内修改表单元素的问题,为此,我建议在项目更改后,对每个元素使用ngChange方法来设置值。这是我目前认为AngularJS无法很好处理的少数项目之一。



 类似资料:
  • 问题内容: 我将如何在表单中添加功能,以便用户可以通过单击“添加”来添加更多输入字段。这使用了角度正式库。 这是确切功能的示例,但仅使用angularjs完成。 动态添加表单字段 问题答案: 看到这个plnkr 这是您需要的示例。正如您在插件中看到的那样,可以通过单击按钮动态创建一个。单击按钮也可以删除创建的内容。 请参阅下面的 HTML 和 JS 将如下

  • 我想用jQuery开发一个动态表单生成器,用户可以在其中构建自己的表单并更改表单名称、输入类型、大小等。我知道有一些很酷的拖放在线表单生成器,但我想开发一个非常简单的表单生成器。 我已经开始发展这一点,我面临着一些问题。 当用户单击标签(输入字段)时,它会使用jquery和edit and delete按钮动态创建一个输入字段。 下面的代码在div中附加输入字段,该字段现在是空的。 点击文本输入,

  • 我正在尝试为我的角应用程序编写一个e2e测试,特别是一个具有3个选择输入的表单。测试需要涉及从这些选择中随机选择选项。第一个选择已填充了数据,但其他 2 个选择在选择前一个选项时异步填充,因此它们彼此依赖。 选择输入还使用 ng 禁用,并且仅当有根据其 ng 重复表达式可用的选项时才启用。 我在测试中使用了页面对象方法,因此我尝试制作一些实用函数来实现测试中需要的随机选择行为: 页面对象: 鉴于从

  • 问题内容: 我不太确定如何处理此问题。我希望我能到达那里。 例如,我在一个页面上有一张充满地址的表。这些计数是动态的(可以是5或10或任何其他计数)。我希望可以在一页上进行编辑。 我的方法是创建wtforms一个表单编辑一个地址,并乘以它在Jinja2的和附加到HTML propertys并在 从itereation,这样我就可以提取人工数据的每一行,并把它放回我的形式,当我想评估一下。 因此,此

  • 问题内容: 是否可以使用CSS禁用表单字段?我当然知道禁用的属性,但是可以在CSS规则中指定此属性吗?就像是 - 我问的原因是,我有一个应用程序,其中表单字段是自动生成的,并且字段是根据某些规则(以Javascript运行)隐藏/显示的。现在,我想扩展它以支持禁用/启用字段,但是规则的编写方式可以直接操纵表单字段的样式属性。因此,现在我必须扩展规则引擎以更改属性以及表单字段的样式,这在某种程度上似

  • 问题内容: 我正在尝试验证从后端端点给我的一些表单字段… 因此基本上,元素是在内动态创建的。因此,属性也被动态添加,如,等… 但是,由于该属性是动态添加的,因此当我尝试验证它时,例如: 它不返回任何内容,因为在这一点上,它不知道是什么。 我创建了一个jsFiddle来演示该问题:http : //jsfiddle.net/peduarte/HB7LU/1889/ 任何帮助或建议将不胜感激! FAN