输出表单的所有成员(form.FormController)

时间:2014-04-02 12:40:40

标签: html angularjs

请参阅代码here

它是一种角形式,变量form应为FormController。正如您在使用form.$pristine时所看到的那样,$pristine中存在变量form,但是当我尝试<pre>form = {{form}}</pre>时,它为什么不输出。我希望看到所有成员(如果可能的话是函数名,或者至少是所有基元,如$dirty$valid等)为什么它不在pre标签中输出,怎么能我给他们看?它主要用于调试,但也很好奇。

<form novalidate name="form" class="simple-form">
    Name: <input type="text" ng-model="user.name" /><br />
    E-mail: <input type="email" ng-model="user.email" /><br />
    Gender: <input type="radio" ng-model="user.gender" value="male" />male
    <input type="radio" ng-model="user.gender" value="female" />female<br />
    <button ng-click="reset()">RESET</button>
    <button ng-click="update(user)">SAVE</button>
  </form>
  <pre>pristine = {{form.$pristine}}</pre>
  <pre>form = {{form}}</pre>

输出

pristine = true
form = {}

2 个答案:

答案 0 :(得分:2)

这样的表达式:{{form}}会将表单对象转换为字符串。 Angular使用angular.toJson函数中的构建来序列化对象。请查看文档:{​​{3}}。如您所见,所有带有前导$的属性都会被删除。

如何解决您的问题:

您可以使用JSON.stringify函数获取所有属性。因为您无法在表达式中调用此函数,所以需要在控制器中提供辅助函数:

$scope.stringify = function(obj){
   return JSON.stringify(obj);
}

现在,您可以在视图中输出完整的表单对象:

{{stringify(form)}}

答案 1 :(得分:0)

以下内容也应该有效......

<pre>form = {{form | json}}</pre>