我正在尝试获取表单字段的输入值,但是当我使用下面的代码时,该值显示为undefined。
知道我在这里做错了吗?
.controller('ContactFormCtrl',
function (Contacts) {
var contactForm = this;
contactForm.contacts = Contacts;
contactForm.contact = {};
var mail=contactForm.contact.email;
contactForm.onchange = function () {console.log(mail);};
});
<div class="col-sm-6 form-group">
<label class="control-label" for="email">Email</label>
<input type="email" id="email" name="email" ng-model="contactForm.contact.email" class="form-control" ng-change="contactForm.onchange()" ng-model-options="{ updateOn: 'blur' }" />
</div>
答案 0 :(得分:1)
将控制器更新为:
.controller('ContactFormCtrl',
function (Contacts) {
var contactForm = this;
contactForm.contacts = Contacts;
contactForm.contact = {};
contactForm.contact.email="";
var mail=contactForm.contact.email;
contactForm.onchange = function () {console.log(mail);};
});
目前,没有电子邮件属性&#34; contactForm.contact&#34;宾语。因此,您需要初始化电子邮件属性,它不会给您未定义的错误。
答案 1 :(得分:0)
当您使用controllerAs
语法时,您应该使用别名contactForm
<div ng-controller="ContactFormCtrl as contactForm">
<div class="col-sm-6 form-group">
<label class="control-label" for="email">Email</label>
<input type="email" id="email" name="email" ng-model="contactForm.contact.email" class="form-control" ng-change="contactForm.onchange()" ng-model-options="{ updateOn: 'blur' }" />
</div>
</div>
它未定义的原因是你在contact
之后重新初始化了控制器contactForm.contacts = Contacts;
对象,它覆盖了email
的值。
<强>更新强>
正如在聊天中所讨论的那样,您希望在电子邮件验证时显示电子邮件以及您想要调用onchange
函数,因此您必须使用指令ng-change
与{{1}的组合那么你应该摆脱不适合你要求的ng-blur
。
<强>标记强>
ng-model-options