【问题标题】:creating dynamic forms using ng-repeat使用 ng-repeat 创建动态表单
【发布时间】:2015-12-23 02:02:10
【问题描述】:

大家好,我需要创建一些动态表单,以便用户可以根据他们的规范配置提要。

我已使用 ng-repeat 执行以下操作:

  1. 为用户需要配置的每个提要创建一个新选项卡
  2. 对于每个属性,提要都有一个标签,并且会创建输入文本框。 标记:

    <tabset>
    <tab ng-repeat="feed in feeds" heading="{{feed.heading}}">
        <form role="form">
            <div class="row" ng-repeat="property in feed.properties">
                <div class="col-xs-6">
                    <div class="input-group">
                        <span class="input-group-addon">
                            <span>{{property.name}}</span>
                        </span>
                        <input type="text" class="form-control" value="{{property.value}}">
                    </div>       
                </div>
            </div>
        </form> 
    </tab></tabset>
    

这适用于我拥有的支持 json 但是我想知道为这种用例捕获数据的公认方法是什么,显然我不知道每个提要有多少提要或属性,所以我想我需要以某种方式将它绑定到一个数组。

问题是怎么做的?

【问题讨论】:

    标签: javascript angularjs forms dynamic model


    【解决方案1】:

    使用ng-model

    <input type="text" class="form-control" ng-model="property.value">
    

    这样文本框就绑定到property.value。当您更改文本框中的文本时,角度会自动更新 property.value。你可以在你的 JS 中使用它,就像任何其他变量一样。这就是棱角分明的美妙之处。

    【讨论】:

    • 遗憾的是,这些输入是动态生成的,我想在这种情况下,这意味着对任何输入框的任何更改都会覆盖 property.value 的值。我需要为每个由 ng-repeat 动态生成的输入动态生成的模型实例。
    • 不,不会。 ng-repeat 创建的每个元素都有自己的范围,并且只会更新相应的值。例如。 feed2.property3.value。 ng-repeat 的工作方式与您期望的任何语言的“for each”非常相似。添加&lt;span&gt;{{property.value}}&lt;/span&gt; 以查看它的实际效果
    • 所以当我想抓取所有这些模型发送到服务器时,我该怎么做,我不知道这是可能的!
    • 它们在您的提要对象中更新。因此,您可以将整个提要发送回服务器,例如作为 JSON。显然取决于服务器如何期望数据。将&lt;pre&gt;{{feeds | json}}&lt;/pre&gt; 添加到页面底部,这样您就可以看到您的对象会发生什么
    • 非常感谢!我不敢相信我错过了这个功能!
    猜你喜欢
    • 2017-03-24
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多