gpt4 book ai didi

javascript - 比较angularjs指令中的两个字段

转载 作者:搜寻专家 更新时间:2023-11-01 05:31:05 25 4
gpt4 key购买 nike

我正在尝试创建可用于比较多个项目中的两个字段的指令。

标记:

<div class="form-group">
<input ng-model="user.password" type="password" name="password" />
</div>
<div class="form-group">
<input ng-model="user.confpassword" ng-compare="password" name="confpassword" type="password" />
<p ng-show="registrationform.password.$error.ngcompare" class="help-block">Password's don't match</p>

指令:

 "use strict";
angular.module('app.directive.ngCompare', []).directive('ngCompare', function () {

return {
require: 'ngModel',
link: function (scope, element, attrs, ngModelController)
{
ngModelController.$parsers.unshift(function (viewvalue) {
console.log(scope); // doesnot contain password field object
console.log(viewvalue); // gives me value of confpassword field
console.log(scope[attrs.ngCompare]); // undefined
});


}

}});

我还没有完成我的指令的编写,但是,在开发期间,当我在控制台范围内时,我没有获得第一个密码的值,但我获得了 confpassword 的值。我将这个指令作为“app.directive.ngCompare”包含在我的主应用程序中。是因为我没有得到密码的值吗?

我使用的是 Angular 版本 1.3.9。我知道那里有很多类似的指令,但我需要逐步弄清楚它们是如何运行的,所以开始从头开始创建。是否有任何其他方法可以使用 angularjs 技术而不是 jquery 方法来获取密码的值。

最佳答案

到目前为止给出的答案的问题在于它们都创建了一个隔离范围。这意味着您不能在同一输入或另一个指令上使用其他指令。

可以通过修改上面的内容来解决这个问题:

.directive("compareTo", function() {
return {
require: "ngModel",
link: function(scope, element, attrs, ctrl) {

ctrl.$validators.compareTo = function(val) {
return val == scope.$eval(attrs.compareTo);
};

scope.$watch(attrs.compareTo, function() {
ctrl.$validate();
});
}
};
});

关于javascript - 比较angularjs指令中的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063107/

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