所以,我有一个带有一些选项的选择菜单,以及一个带有数字的文本字段。我需要文本字段具有一定的范围,具体取决于选择菜单的值,我已经使用自定义验证进行了设置。我无法弄清楚的是,当选择菜单的选项发生变化时,如何强制运行验证?
我直接在HTML中尝试:
<select ng-change="$scope.my_form.numberField.$validate()">
这没有用,所以我在控制器中创建了一个创建的函数来运行:
$scope.myFunction = function(){
$scope.my_form.numberField.$validate();
}
然后将选择更改为
<select ng-change="myFunction()">
然后我尝试将功能代码更改为:
console.log( $scope.my_form.numberField.$validate() );
这是一个&#34; undefined&#34;
HTML文本字段如下所示:
<input type="text" name="numberField" ng-model="numberField" number-validate>
我真的不知道从这里可以去哪里。验证工作完全正确,因为我直接更新字段,但我无法弄清楚如何在选择字段更改时更新它。有什么想法吗?
答案 0 :(得分:0)
这是我目前的解决方案。我仍然觉得调用$ validation()应该工作,我错过了什么,所以如果有人知道这是什么问题,请分享。
我更改了我的指令以添加$ watchCollection并包含我想要跟踪的两个字段。
最初我有这样的事情:
App.directive('numberValidate', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
var selectField = scope.my_form.selectField
我把它改成了这样的东西:
App.directive('numberValidate', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
scope.$watchCollection('[my_form.numberField, my_form.selectField]', function (data) {
var numberField = data[0];
var selectField = data[1];
这仍然需要在html中进行数字验证:
<input type="text" name="numberField" ng-model="my_form.numberField" number-validate>
我对Angular很新,所以我不确定这是不是最好的选择,但它现在正在运作。