动态表单创建 - AngularJS

时间:2014-07-13 11:44:16

标签: angularjs angularjs-scope angularjs-ng-repeat

我遇到了一个问题,我希望你可以帮助我。基本上我正在尝试使用AngularJS和bootstrap创建动态表单创建页面(只是一个简单的)。我已经成功创建了按钮,当单击时创建表单,然后输入,但是当我尝试在文本输入中输入任何内容时,我会收到错误“无法设置未定义的属性'id1'”。我基本上做的是通过单击我把JSON字符串放在一起的按钮,然后我使用angulars ng-repeat来循环创建的JSON的内容以在屏幕上创建输入等。代码如下所示:

控制器代码(函数映射到相应的按钮):

$scope.createRow = function(){
            $scope.newForm.sections[0].rows.push({"attribute": "", "properties":[]});
        };

$scope.createInput = function(){
            $scope.newForm.sections[0].rows[0].properties.push({"id":"id1", "input": "text"});
        }

html代码:

               <section  id="test" ng-repeat="property in row.properties">

                    <div class="{{property.inputDivCss || 'col-md-8'}}">
                        <input
                                class="{{property.inputClass}}"
                                type="{{property.type}}"
                                placeholder="{{property.placeholder}}"
                                ng-model="enrollmentForm.properties[property.id]"
                                ng-required="property.required"
                                name="{{property.id}}"
                                value="{{property.value}}"
                                ng-pattern="{{property.pattern}}"
                                />
                    </div>

                </section>

正如我所说,当我点击调用createInput的相应按钮时,会显示文本框,一切都很好。只有当我尝试输入文本框时才会出现错误“无法设置未定义的属性'id1'”。我可能正在做一些愚蠢的事情,或者只是忘记初始化某些东西,但对于我的生活,我似乎无法弄明白。

感谢您提供的帮助。

1 个答案:

答案 0 :(得分:1)

看看这个:angular-dynamic-form 还有angular-formly

解决您的问题,初始化属性

enrollmentForm.properties = {};