我正在尝试使用动态表单,并在AngularJS中使用了以下内容:
<dynamic-form
template="formTemplate"
ng-model="formData"
ng-submit="processForm()">
</dynamic-form>
&#13;
控制器:
$ scope.formData = {}; // JavaScript需要一个对象来将我们的表单模型放入。
$ scope.formTemplate = [];
function onsuccess(response){ console.log(&#39;用户注册表:&#39; +响应); //这是表单的id,它将被转换为字符串 // var form-id = response.form-id; var result = toArray(response); $ scope.formTemplate = result;
}
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":""
}
}
}
&#13;
答案 0 :(得分:0)
我认为问题是因为你的结果变量包含$ resource对象而不是常规对象。试试这个:
function onsuccess(response) {
var result = toArray(response);
$scope.formTemplate = angular.toJson(result);
}
答案 1 :(得分:0)
对于那些现在发现这一点的人来说,实际的答案是,当模板发生变化时,正在使用的库不能正确支持重新渲染表单。重新渲染表单时需要记住很多事情,特别是那些已经包含数据的表单,我从来没有把它们全部搞清楚。
此时,我建议不要使用我的库,而是使用其自述文件的替代部分中提到的库之一。它们通常制作得更好,而且更新。