Angular ng-model 在编辑时被设置为未定义
Angular ng-model is being set to undefined on edit
我正在创建一个模态对话框并尝试在对话框关闭时读回字段,但是在编辑输入时,输入字段的 ng-model 被设置为未定义。对于 Plunk,如果单击对话框按钮然后在不修改文本字段的情况下按确定,它将显示 "blah"。但是如果你修改了文本输入,那么什么也不会显示。
对话框模板是:
<script type="text/ng-template" id="simpleModal.html">
<div class="modal-header">
<h3 class="modal-title">Simple Modal</h3>
</div>
<div class="modal-body">
<div class="form-group">
<label for="emailInput">Email</label>
<input id="emailInput" type="email" class="form-control" ng-model="user.email">
</div>
</div>
<div class="modal-footer">
<button class="btn" type="button" ng-click="ok()">Ok</button>
</div>
</script>
模态对话框的控制器:
app.controller('SimpleModalController', function($scope, $uibModalInstance, $log) {
$scope.user = {
email: "blah"
};
$scope.ok = function() {
$log.debug('simpleModal ok called ' + $scope.user.email);
$uibModalInstance.close($scope.user.email);
};
});
我看到了对 的引用,但我更改了我的代码以反映这一点,但它没有解决问题。
您已在模态
的输入字段中声明了输入type="email"
<input id="emailInput" type="email" class="form-control" ng-model="user.email">
如果数据是根据email传值的。喜欢 a@b.com
您可以检查数据是否有有效的电子邮件
HTML
<form name="myForm">
<input type="email" name="myEmail" model="myEmail" />
<span>Valid Email {{myForm.myInput.$valid}}
</form>
如果您想传递任何字符串,则必须将其设为 type="text"
。
它被设置为未定义的原因是因为您将电子邮件地址输入为 type=email。如果您在该字段中输入除有效电子邮件地址以外的任何内容,user.email 将被设置为未定义。
我只是 运行 你的 plunker 并输入了一个有效的电子邮件地址,可以看到它已正确设置。在这种情况下,您应该在允许提交之前验证其格式正确的电子邮件地址。
我正在创建一个模态对话框并尝试在对话框关闭时读回字段,但是在编辑输入时,输入字段的 ng-model 被设置为未定义。对于 Plunk,如果单击对话框按钮然后在不修改文本字段的情况下按确定,它将显示 "blah"。但是如果你修改了文本输入,那么什么也不会显示。
对话框模板是:
<script type="text/ng-template" id="simpleModal.html">
<div class="modal-header">
<h3 class="modal-title">Simple Modal</h3>
</div>
<div class="modal-body">
<div class="form-group">
<label for="emailInput">Email</label>
<input id="emailInput" type="email" class="form-control" ng-model="user.email">
</div>
</div>
<div class="modal-footer">
<button class="btn" type="button" ng-click="ok()">Ok</button>
</div>
</script>
模态对话框的控制器:
app.controller('SimpleModalController', function($scope, $uibModalInstance, $log) {
$scope.user = {
email: "blah"
};
$scope.ok = function() {
$log.debug('simpleModal ok called ' + $scope.user.email);
$uibModalInstance.close($scope.user.email);
};
});
我看到了对 的引用,但我更改了我的代码以反映这一点,但它没有解决问题。
您已在模态
的输入字段中声明了输入type="email"
<input id="emailInput" type="email" class="form-control" ng-model="user.email">
如果数据是根据email传值的。喜欢 a@b.com
您可以检查数据是否有有效的电子邮件
HTML
<form name="myForm">
<input type="email" name="myEmail" model="myEmail" />
<span>Valid Email {{myForm.myInput.$valid}}
</form>
如果您想传递任何字符串,则必须将其设为 type="text"
。
它被设置为未定义的原因是因为您将电子邮件地址输入为 type=email。如果您在该字段中输入除有效电子邮件地址以外的任何内容,user.email 将被设置为未定义。
我只是 运行 你的 plunker 并输入了一个有效的电子邮件地址,可以看到它已正确设置。在这种情况下,您应该在允许提交之前验证其格式正确的电子邮件地址。