【问题标题】:Form data ignores ngModel表单数据忽略 ngModel
【发布时间】:2016-09-19 22:11:59
【问题描述】:

我正在尝试使用动态表单并在 AngularJS 中使用了以下内容:

<dynamic-form 
		template="formTemplate"
        ng-model="formData"
        ng-submit="processForm()">
</dynamic-form>

控制器:

$scope.formData = {}; // JavaScript 需要一个对象来放入我们表单的模型。

$scope.formTemplate = [];

函数成功(响应){ console.log('用户注册表格:'+响应); // 这是表单的id,会转换成字符串 // var form-id = response.form-id; var 结果 = toArray(响应); $scope.formTemplate = 结果;

}

function toArray(obj) {
  var result = [];
  var model = [];var type = [];var label = [];
  for (var prop in obj) {
    var value = obj[prop];
    angular.forEach(obj.fields, function(val,key){
        if(val.field_type != ''){type.push(val.field_type);}
        else{type.push(0);} 
        model.push(key);
    });
  }
  for(var j=0;j<model.length;j++){
    if(type[j] === 'textfield' || type[j] === 'password'){
        type[j] = 'text';
    }
    else if(type[j] === 'email'){
        type[j] = 'email';
    }
   else{
      type[j] = type[j];
   }

    console.log("result.. " + model[j] + "......"+ type[j]);
     result.push(
       {
           "type": type[j],
           "label": model[j],
           "model": model[j]
       }
     );
  }
  console.log("Result..." + result);
  return result;
}

我正在使用这个动态表单:https://github.com/danhunsaker/angular-dynamic-forms

但是,如果我使用其中给出的示例,它可以工作,但上述情况不起作用。这里出了什么问题?模型评估?

我的回答:

 var response =        {  
   "form-id":"user_register_form",
   "fields":{  
      "name":{  
         "field_type":"textfield",
         "description":""
      },
      
      "mail":{  
         "field_type":"textfield",
         "description":""
      },
      "field_first_name":{  
         "field_type":"textfield",
         "description":""
      },
     "field_gender":{  
         "field_type":"radio",
         "options":{  
            "male":"Male",
            "female":"Female"
         },
         "description":""
      }
     
   }
}

【问题讨论】:

  • 你能告诉我这个console.log上显示什么 --> console.log("Result..." + result);它在 toArray 函数上。
  • 它是一个对象数组。结果...[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象]
  • 例如,如果我打印第一个对象 - 结果..[对象对象] 类型...文本标签...名称模型...名称(键,值)

标签: javascript angularjs angular-ngmodel dynamic-forms


【解决方案1】:

对于那些现在发现这一点的人来说,实际的答案是,正在使用的库不正确地支持在模板更改时重新呈现表单。重新渲染表单时需要跟踪很多事情,尤其是其中已经包含数据的表单,而我从来没有时间正确地弄清楚它们。

此时,我建议不要使用我的库,而是使用其 README 的替代部分中提到的库之一。它们通常制作得更好,更新更及时。

【讨论】:

    【解决方案2】:

    我认为问题是因为您的结果变量包含 $resource 对象而不是常规对象。试试这个:

    function onsuccess(response) {
      var result = toArray(response);
      $scope.formTemplate = angular.toJson(result);
    }
    

    【讨论】:

    • 更改后出现任何错误?你能添加 console.log($scope.formTemplate);在上面的行之后?
    • 你能告诉我onsuccess函数在哪里执行吗?
    • 从 $http 响应获得动态响应后,在 RegisterCtrl 中。
    • onsuccess函数是否位于RegisterCtrl(相同范围)?
    • 您可以在
    猜你喜欢
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多