表单数据忽略ngModel

时间:2016-05-23 06:35:49

标签: javascript angularjs angular-ngmodel dynamic-forms

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



<dynamic-form 
		template="formTemplate"
        ng-model="formData"
        ng-submit="processForm()">
</dynamic-form>
&#13;
&#13;
&#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

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

我的回复:

&#13;
&#13;
 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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

对于那些现在发现这一点的人来说,实际的答案是,当模板发生变化时,正在使用的库不能正确支持重新渲染表单。重新渲染表单时需要记住很多事情,特别是那些已经包含数据的表单,我从来没有把它们全部搞清楚。

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