元素数组无法正常工作

我有以下mongoose模式

var MySchema = new Schema({ field1: [{ format: { type: String, required: true }, value: { type: String, required: true } }], field2: [{ format: { type: String, required: true }, value: { type: String, required: true } }] }); 

为了得到这个模型的input,我创build了一个具有控件数组的表单,代码如下

即使如果试图使用$scope.field1[<index>]它给出的错误

TypeError:无法读取未定义的属性'field1'

 <div class="form-group"> <div class="col-md-12 padding-left-0"> <label for="question">Field1 Values</label> </div> <div class="col-md-12" ng-repeat="(optionKey, optionValue) in [0,1]"> <ng-form name="field1Form{{optionKey}}"> <div class="col-md-2" ng-class="{ 'has-error' : submitted && field1Form{{optionKey}}.field1_format.$invalid }"> <label for="field1_format">Type</label> <select class="form-control" name="field1_format" id="field1_format" data-ng-model="form.field1[$index].format" required> <option value="text" selected="selected">Text</option> <option value="image">Image</option> </select> <div ng-show="submitted && field1Form{{optionKey}}.field1_format.$invalid" class="help-block"> <p ng-show="field1Form{{optionKey}}.field1_format.$error.required">Field1 type is required</p> </div> </div> <div class="col-md-10" ng-class="{ 'has-error' : submitted && field1Form{{optionKey}}.field1_value.$invalid }"> <div class="col-md-12"> <label for="field1_value">Value</label> </div> <div class="col-md-12"> <input type="text" class="form-control" name="field1_value" id="field1_value" data-ng-model="form.field1[$index].value" placeholder="Enter field1 value" required/> <div ng-show="submitted && field1Form{{optionKey}}.field1_value.$invalid" class="help-block"> <p ng-show="field1Form{{optionKey}}.field1_value.$error.required">Field1 value is required</p> </div> </div> </div> </ng-form> </div> </div> <div class="form-group col-md-12 padding-left-0" data-ng-show="true"> <div class="col-md-12 padding-left-0"><label>Field2 Values</label></div> <div class="col-md-6" data-ng-repeat="i in [0,1]"> <ng-form name="field2Form{{i}}"> <label>Value-{{i+1}}</label> <div class="col-md-12"> <div class="col-md-4" ng-class="{ 'has-error' : submitted && field2Form{{i}}.field2_format.$invalid }"> <label for="field2_format">Type</label> <select class="form-control" name="field2_format" id="field2_format" data-ng-model="form.field2[$index].format" required> <option value="text">Text</option> <option value="image">Image</option> </select> <div ng-show="submitted && field2Form{{i}}.field2_format.$invalid" class="help-block"> <p ng-show="field2Form{{i}}.field2_format.$error.required">Field2 type is required</p> </div> </div> <div class="col-md-7" ng-class="{ 'has-error' : submitted && field2Form{{i}}.field2_value.$invalid }"> <label for="field2_value">Value</label> <input type="text" class="form-control" name="field2_value" id="field2_value" data-ng-model="form.field2[$index].value" placeholder="Enter Value {{i+1}}" required/> <div ng-show="submitted && field2Form{{i}}.field2_value.$invalid" class="help-block"> <p ng-show="field2Form{{i}}.field2_value.$error.required">Field2 value is required</p> </div> </div> </div> </ng-form> </div> </div> 

但是在angular度控制器中,我得到了field2的对象值的数组,但是field1没有从表单数据中传递(丢失)。

但是当我硬编码下面的问题数组field1然后field1也工作正常

 <div class="form-group"> <div class="col-md-12"> <ng-form name="field1Form0"> <div class="col-md-2" ng-class="{ 'has-error' : submitted && field1Form0.field1_format.$invalid }"> <label for="field1_format">Type</label> <select class="form-control" name="field1_format" id="field1_format" data-ng-model="form.field1[0].format" required> <option value="text">Text</option> <option value="image">Image</option> </select> <div ng-show="submitted && field1Form0.field1_format.$invalid" class="help-block"> <p ng-show="field1Form0.field1_format.$error.required">Field1 type is required</p> </div> </div> <div class="col-md-10" ng-class="{ 'has-error' : submitted && field1Form0.field1_value.$invalid }"> <div class="col-md-12"> <label for="field1_value">Value</label> </div> <div class="col-md-12"> <input type="text" class="form-control" name="field1_value" id="field1_value" data-ng-model="form.field1[0].value" placeholder="Enter field1" required/> <div ng-show="submitted && field1Form0.field1_value.$invalid" class="help-block"> <p ng-show="field1Form0.field1_value.$error.required">Question value is required</p> </div> </div> </div> </ng-form> </div> </div> 

任何人都可以帮助我吗?

这似乎是一些angular度的问题。

已经通过在angular Controller声明variables来修复,如下所示

 $scope.form = {}; $scope.form.field1 = {}; 

现在它工作正常。 可能是在自动声明nested objects or array的angular度的问题。

你很可能混淆了很多东西。

  • 其中一个你已经认识到 – 范围没有一个form财产。

  • expression式field1Form{{optionKey}}.field1_format.$invalid是无效的,因为string插值不能在find的上下文中使用。 据我所知, ng-classng-show指令需要JavaScriptexpression式,而不是模板。 我的观点很明显,插值expression式{{optionKey}}不应该在ng-classng-show指令中使用。