从服务中获取 ng-patten 作为变量
Getting ng-patten as a variable from a service
你好,我是 运行 一个需要大量跨页面表单验证的应用程序,所以我试图从我在控制器中使用的服务中获取验证模式。
这里的问题是当我输入正确的电子邮件地址时,ng-pattern 的反应方式不正确。
这是一个 plunker,这是表单的代码
<form method="POST" action="#" name="newsletterForm" id="newsletterForm" ng-controller="newsletterForm" novalidate>
<input ng-pattern="/{{patterns.email}}/" type="email" name="email" ng-model="email" required />
<button type="submit">Invia</button>
{{newsletterForm.email.$error.pattern}}
</form>
这是app.js代码
var app = angular.module('plunker', []);
app.controller('MainCtrl', function(){});
app.service('validationPatterns', function() {
this.getPatterns = function() {
return {
email: "^([a-zA-Z0-9\'\.\-\_]{2,64})([\@]{1})([a-zA-Z0-9\.\-\_]{2,64})([\.]{1})([a-zA-Z]{2,16})$"
}
}
});
app.controller('newsletterForm', function($scope, validationPatterns){
$scope.patterns = validationPatterns.getPatterns();
});
我假设问题可能是当 angular 在输入标签内呈现模式时,它呈现它转义反斜杠
^([a-zA-Z0-9'.-_]{2,64})([@]{1})([a-zA-Z0-9.-_]{2,64})([.]{1})([a-zA-Z]{2,16})$
我已经尝试在服务中添加双反斜杠以使 angular 正确呈现它,但它仍然无法正常工作。
有什么想法吗?
ng-pattern
使用 $scope
变量。在你的情况下应该是
<input ng-pattern="patterns.email"
已更新plunker
你好,我是 运行 一个需要大量跨页面表单验证的应用程序,所以我试图从我在控制器中使用的服务中获取验证模式。
这里的问题是当我输入正确的电子邮件地址时,ng-pattern 的反应方式不正确。
这是一个 plunker,这是表单的代码
<form method="POST" action="#" name="newsletterForm" id="newsletterForm" ng-controller="newsletterForm" novalidate>
<input ng-pattern="/{{patterns.email}}/" type="email" name="email" ng-model="email" required />
<button type="submit">Invia</button>
{{newsletterForm.email.$error.pattern}}
</form>
这是app.js代码
var app = angular.module('plunker', []);
app.controller('MainCtrl', function(){});
app.service('validationPatterns', function() {
this.getPatterns = function() {
return {
email: "^([a-zA-Z0-9\'\.\-\_]{2,64})([\@]{1})([a-zA-Z0-9\.\-\_]{2,64})([\.]{1})([a-zA-Z]{2,16})$"
}
}
});
app.controller('newsletterForm', function($scope, validationPatterns){
$scope.patterns = validationPatterns.getPatterns();
});
我假设问题可能是当 angular 在输入标签内呈现模式时,它呈现它转义反斜杠
^([a-zA-Z0-9'.-_]{2,64})([@]{1})([a-zA-Z0-9.-_]{2,64})([.]{1})([a-zA-Z]{2,16})$
我已经尝试在服务中添加双反斜杠以使 angular 正确呈现它,但它仍然无法正常工作。 有什么想法吗?
ng-pattern
使用 $scope
变量。在你的情况下应该是
<input ng-pattern="patterns.email"
已更新plunker