gpt4 book ai didi

javascript - 在没有 DOM 操作或 jQuery 的情况下,如何在 AngularJS 中制定指令来验证电子邮件或密码确认?

转载 作者:可可西里 更新时间:2023-11-01 01:23:12 28 4
gpt4 key购买 nike

我想在 AngularJS 中创建一个密码/电子邮件确认指令,但到目前为止我看到的所有指令都依赖于大量 DOM 戳或拉入 jQuery。如果可以的话,我只想依赖 $scope 属性。最好的方法是什么?

最佳答案

在查看了实现此类指令的众多有用方法之后,我想出了如何在不进行 DOM 操作或使用 jQuery 的情况下实现它。这是一个 Plunk that shows how .

它涉及使用:

  • 两个输入字段的 $scope 上的 ng-model 属性
  • $parse(expr)(scope) 和一个简单的 scope.$watch 表达式——根据添加匹配属性指令的控件的 $modelValue 计算当前范围上下文中的“匹配”属性.
  • 如果基础表单上的 $invalid 属性为真,则禁用提交按钮。

我希望这对一些人有用。这是要点:

var app = angular.module('app', [], function() {} );

app.directive('match', function($parse) {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
scope.$watch(function() {
return $parse(attrs.match)(scope) === ctrl.$modelValue;
}, function(currentValue) {
ctrl.$setValidity('mismatch', currentValue);
});
}
};
});

app.controller('FormController', function ($scope) {
$scope.fields = {
email: '',
emailConfirm: ''
};

$scope.submit = function() {
alert("Submit!");
};
});

然后,在 HTML 中:

<!DOCTYPE html>
<html ng-app="app">
<head lang="en">
<meta charset="utf-8">
<title>Custom Plunker</title>
<link rel="stylesheet" href="style.css">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="FormController">
<form name='appForm' ng-submit='submit()'>
<div class="control-group">
<label class="control-label required" for="email">Email</label>
<div class="controls">
<input id="email" name="email" ng-model="fields.email"
class="input-xlarge" required="true" type="text" />
<p class="help-block">user@example.com</p>
</div>
</div>
<div class="control-group">
<label class="control-label required" for="emailConfirm">Confirm Email</label>
<div class="controls">
<input name="emailConfirm" ng-model="fields.emailConfirm"
class="input-xlarge" required="true"
type="text" match="fields.email" />
<div ng-show="appForm.emailConfirm.$error.mismatch">
<span class="msg-error">Email and Confirm Email must match.</span>
</div>
</div>
</div>
<button ng-disabled='appForm.$invalid'>Submit</button>
</form>
</body>
</html>

关于javascript - 在没有 DOM 操作或 jQuery 的情况下,如何在 AngularJS 中制定指令来验证电子邮件或密码确认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17475595/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com