在命名表单上使用ng-model时获取[Object object]

时间:2014-06-03 14:04:45

标签: forms angularjs data-binding

如果我有以下内容:

<form
    id="registration"
    name="registration"
    method="POST"
>

    <input
        type="text"
        name="first_name"
        id="first-name"
        ng-model="registration.first_name"
        placeholder="First name"
    />

当我的表单显示时,上面配置的字段最终会在其中包含[Object object]作为初始值。

我在这里做错了什么,以及在表单内部进行双向绑定的正确方法是什么?

4 个答案:

答案 0 :(得分:24)

在表单上设置name属性会创建一个范围对象useful for validation,但不能用于输入的ng-model属性。

如果为ng-model使用单独的范围变量,它将按预期工作:

<form
    ...
    name="reg"
    ...
>

<input
    ...
    ng-model="registration.first_name"
    ...
/>

Demo

答案 1 :(得分:1)

我猜注册范围未初始化或者registration.first_name是对象。

看看这个plunker:http://plnkr.co/edit/bdbs0XVB8hZSodOTYyM4?p=preview

在控制器中或使用ng-init ng-init="registration = {}"

初始化注册模型

如果registration.first_name是一个对象,那么它将显示为[Object object]。您必须提供正确的字符串值作为模型到ng-model

答案 2 :(得分:0)

Angularjs Form在表单字段中加载显示[object Object]

我猜,只有当您的表单名称和ng-model名称(值)相同时,它才会显示此错误

like

 <form name="userform">-------
 <input ng-model="userform.firstname">

表单名称或ng-model 值更改为用户或某些xyz

答案 3 :(得分:0)

如果您未在ng-controller中注册控制器,则可以删除name =&#34; registration&#34;从表单,因为控制器有表单的init,我尝试工作。

plnkr.co/edit/JK3utpe1eERrJeoveaCQ?p=preview