如何在Angular中使用表单名来获取输入数据?

时间:2014-12-08 12:27:46

标签: javascript angularjs angular-ngmodel

Jenkov的本教程中,他断言您可以为表单命名,然后通过

在控制器中访问它
$scope.FORM_NAME.INPUT_NAME

例如

<form name="myFormNg" ng-submit="myForm.submitTheForm()" >
    <input name="firstName" type="text" ng-model="myForm.firstName">
  </form> 

然后在Angular中

$scope.myFormNg.firstName

然而,当我尝试它时,我没有得到我在输入框中输入的内容(abc),而是得到了整个对象:

{"$viewValue":"abc","$modelValue":"abc","$$rawModelValue":"abc","$validators":{},"$asyncValidators":{},"$parsers":[],"$formatters":[null],"$viewChangeListeners":[],"$untouched":false,"$touched":true,"$pristine":false,"$dirty":true,"$valid":true,"$invalid":false,"$error":{},"$$success":{"parse":true,"required":true},"$name":"email","$options":null,"$$lastCommittedViewValue":"abc"}

为什么呢? Jenkov省略了吗?

1 个答案:

答案 0 :(得分:1)

实际上,Jenkov提到(并且非常清楚)一件事:使用$scope.formName.inputName,您将获得ngModelController的实例(并且仅当此输入已被绑定时 - ng-model或以某种其他方式)。

这个实例有很多用途;你可以获取它的视图值(通过$ viewValue属性;参见这个demo),检查它是否通过验证等 - 但它仍然是一个Object,而不是一个字符串。