角度文本区域验证错误
Posted
技术标签:
【中文标题】角度文本区域验证错误【英文标题】:Angular textarea validation error 【发布时间】:2016-12-03 00:07:24 【问题描述】:我的应用中有一个文本区域,如下所示:
<textarea type="text" class="form-control" name="bioBackground" ng-model="obj.background" value="obj.background" ng-change="autosave()" maxlength="1500" required></textarea>
这是一个必填字段,如您所见,我在代码中添加了一个必填标签。但是这个必需的标签会导致 Angular 出错。
例如:
如果我在字段和退格键中键入并删除所有文本,则会将对象从范围中删除。见下面的例子:
退格前
你可以看到背景变量在范围内。
退格并删除文本后:
你可以看到背景变量已经从作用域中消失了。
只有在我使用 required 标记时才会发生这种情况。如果我不使用所需的标签,它可以正常工作,即使在删除所有文本后,背景变量也会保持在范围内。
我做错了什么。
【问题讨论】:
那个包含experience
和background
的对象是在你的控制器中创建的吗?
@KreepN 是的,就像这样$scope.obj =
我自己检查了一下,那是一些疯狂的东西。也找不到有关上述问题的任何文档。希望其他人有一些见解
@KreepN 有什么建议吗?我可能在控制器而不是前端提交时验证了我的字段。
我想这取决于你的最终目标,我认为这更像是一个有趣的 Angular 行为。我的意思是,即使它被从范围中删除,如果没有在文本区域中为您提供值,也应该无法提交表单。相关框应保持红色。
【参考方案1】:
它的工作,背景是未定义的,同时使用退格键删除所有文本。
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope)
$scope.name = 'World';
$scope.obj =
"experience":
"field0":"asdf",
"field1":"asss"
,
"background":""
;
console.log($scope.obj);
$scope.autosave=function()
console.log($scope.obj);
);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link href="style.css" rel="stylesheet" />
<script data-semver="1.4.9" src="https://code.angularjs.org/1.4.9/angular.js" data-require="angular.js@1.4.x"></script>
<script src="app.js"></script>
</head>
<body ng-app="plunker" ng-controller="MainCtrl">
<textarea type="text" class="form-control" name="bioBackground" ng-model="obj.background" value="obj.background" ng-change="autosave()" maxlength="1500" required></textarea>
</body>
</html>
【讨论】:
以上是关于角度文本区域验证错误的主要内容,如果未能解决你的问题,请参考以下文章