我正在尝试<div ng-form="vacancyForm">
使用Angular.js 创建一个子表单
有一种html" target="_blank">数据具有许多字段
所有人都required
对它们进行了验证。
提交数据后,我将按照需要进行处理,但是我想重置子表单,以使所有字段都不会变脏,并且该表单在清除字段有效的同时仍然有效,但所有字段均无效。现在脏了,但是将它们标记为无效是空的。
一个示例字段
<div class="control-group" ng-class="getErrorClasses(vacancyForm.headline)">
<label class="control-label" for="headline">Headline</label>
<div class="controls">
<input type="text" class="input-xlarge" id="headline" name="headline" required ng-model="new_vacancy.headline">
<span class="help-inline" ng-show="showError(vacancyForm.headline, 'required')">This field is required</span>
</div>
</div>
这是提交时调用的函数
$scope.addVacancy = function(){
// save the submitted data
$scope.school.vacancies.push($scope.new_vacancy);
// now clear it out
$scope.new_vacancy = {};
$scope.new_vacancy.date = new Date();
// this clears out all the fields and makes them all invalid
// as they are empty. how to reset the form???
}
使用<form>
标签并设置name
属性,然后您可以$scope.formName.$setPristine();
在哪里formName
命名属性。更改值后,元素不再是原始的。
http://docs.angularjs.org/api/ng.directive:form.FormController#$setPristine
更新
上面的答案仅适用于1.2,但在1.3中,angular引入了“触摸”输入的概念。现在,当元素模糊时,角度将标记该字段为已触摸。类似于$setPristine
,您可以使用来设置输入$scope.formName.$setUntouched()
。
https://docs.angularjs.org/api/ng/type/form.FormController#$setUntouched
触摸vs原始
:触摸表示该字段已模糊,而原始表示该字段的值已被修改。Angular的文档指出,“将表单控件设置回原始状态时,将其设置回原始状态通常很有用。”
编辑
这里是一个小提琴演示:https :
//jsfiddle.net/TheSharpieOne/a30kdtmo/
angular.module('myApp', [])
.controller('myCtrl', myCtrl);
function myCtrl() {
var vm = this;
vm.reset = function() {
vm.myForm.$setPristine();
vm.myForm.$setUntouched();
vm.email = vm.password = '';
}
}
.ng-invalid.ng-touched {
outline: 2px solid blue;
}
.ng-invalid.ng-dirty {
outline: 2px solid red;
}
.ng-invalid.ng-dirty.ng-untouched {
outline: 2px solid green;
}
form,
form div {
padding: 5px 10px;
}
h3,
h4 {
margin-bottom: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl as ctrl">
<form name="ctrl.myForm">
<div>
<label for="email">Email</label>
<input name="myInput" type="email" ng-model="ctrl.email" id="email" required>
</div>
<div>
<label for="password">Password</label>
<input name="myPassword" type="password" minlength="8" ng-model="ctrl.password" id="password" required>
</div>
<div>
<button ng-click="ctrl.reset()" type="button">Reset</button>
</div>
</form>
<div>
<h4>Form Level</h4>
<div>$dirty: {{ctrl.myForm.$dirty}}</div>
<div>$pristine: {{ctrl.myForm.$pristine}}</div>
<h4>Input Level</h4>
<h5>Email Input</h5>
<div>$dirty: {{ctrl.myForm.myInput.$dirty}}</div>
<div>$pristine: {{ctrl.myForm.myInput.$pristine}}</div>
<div>$touched: {{ctrl.myForm.myInput.$touched}}</div>
<h5>Password Input</h5>
<div>$dirty: {{ctrl.myForm.myPassword.$dirty}}</div>
<div>$pristine: {{ctrl.myForm.myPassword.$pristine}}</div>
<div>$touched: {{ctrl.myForm.myPassword.$touched}}</div>
</div>
<div>
<h3>Color outlines for input</h3>
<div title="The form loads this way, it can still be invalid since required fields are empty to start with">untouched, pristine: no outline</div>
<div title="Such as in the middle of typing a valid email for the first time">invalid, untouched, dirty: green outline</div>
<div title="blurred with invalid input">invalid, touched, dirty: red outline</div>
<div title="focued and blurred without typing">invalid, touched: blue outline</div>
</div>
</div>
获得场景视频可为客户转出“普通”“清晰”“高清”“pad”“phone”五种的清晰度,转出越多占用空间越大,您可根据实际需求具体选择。 在该页面,您可为用户设置默认清晰度,以满足效果和成本的平衡。 默认码率和对应视频尺寸见下表: 清晰度规则: · 您上传的视频源文件视频码率高于512kbps或分辨率大于640×480才能转换出高清视频; · 对于多种清晰度的视频,获得场景视频服务平台支持您设置您帐
我有一个简单的申请与2个表格。一个表单(form1)允许用户在列表框中选择记录。一旦进行了选择,第二个表单(form2)就应该用第一个表单中的数据更新。 用户应该能够选择一个不同的记录,第二个表单应该用新的数据更新。 我上面展示的只是创建更多的form2版本,它没有更新form2的当前迭代。
我正在使用这个代码。。。 存储到位图的图像清晰度很差。只有4kb。如何提高图像的清晰度?
我有一个像这样的json数据 我找过它,但是Stackoverflow上什么也没有,而且像“\n”这样的东西也不起作用。我听说在其他语言中,有用于制作一个清晰的json数据的库。在Python中可能会有这样的东西。
我需要一些帮助来理解如何将HTML与Angular一起使用。我这里有个目标。我想在下拉列表中显示汽车的。但是当您选择一辆时,变量应该是整个car对象。但是仍应仅显示。 这里有一个玩这个的地方:https://stackblitz.com/edit/angular-cwmwke
有没有办法手动将formGroup设置为无效状态? 我尝试了