AngularJS动态ng模式不工作

AngularJS动态ng模式不工作,angularjs,validation,ng-pattern,Angularjs,Validation,Ng Pattern,我在通过ng模式验证表格时遇到问题。ng模式验证取决于另一个下拉菜单。在下拉菜单中,我有两个值A和B。对于每个值,我有不同的模式进行验证。现在,我面临的问题是,我能够根据值调用模式,但即使我根据模式输入正确的信息,它仍然显示无效。有关更多详细信息,请查找以下代码以了解更多详细信息 HTML表单 $scope.vendors=[ { “名称”:“A” }, { “名称”:“B” } ]; $scope.setVendorName=函数(){ //警报($scope.vendorName.nam

我在通过ng模式验证表格时遇到问题。ng模式验证取决于另一个下拉菜单。在下拉菜单中,我有两个值A和B。对于每个值,我有不同的模式进行验证。现在,我面临的问题是,我能够根据值调用模式,但即使我根据模式输入正确的信息,它仍然显示无效。有关更多详细信息,请查找以下代码以了解更多详细信息

HTML表单

$scope.vendors=[
{
“名称”:“A”
},
{
“名称”:“B”
}
]; 
$scope.setVendorName=函数(){
//警报($scope.vendorName.name);
localStorageService.set(“vendorName”,$scope.vendorName.name);
$scope.vendor=localStorageService.get(“vendorName”);
$scope.seatPattern=功能(奥迪){
如果(audi.name==“A”){
返回“/^[a-fA-F]+[1-6]{1}/”;
}否则{
返回“/^[a-cA-C]+[1-8]{1}/”;
}
}
}

  • 选择奥迪
    请选择一个选项

  • 请输入您的座位号
    请输入座位号字母数字(A1)

这样做。去掉
seatPattern
函数。改用范围变量

$scope.vendors = [{"name":"A"},{"name":"B"}];
$scope.seatPattern =   /^[a-cA-C]+[1-8]{1}/;                       
$scope.setVendorName = function(){

if($scope.vendorName.name== 'A')
    { $scope.seatPattern =   /^[a-fA-F]+[1-6]{1}/; }
else
    { $scope.seatPattern =   /^[a-cA-C]+[1-8]{1}/; }

localStorageService.set("vendorName",$scope.vendorName.name);
$scope.vendor = localStorageService.get("vendorName");
}

  • 选择奥迪
    请选择一个选项

  • 请输入您的座位号
    请输入座位号字母数字(A1)

问题出在您的
座椅模式
功能中

您返回的是字符串,而不是正则表达式。删除引号,它会很好地工作

$scope.seatPattern = function(audi){
     if(audi.name == 'A'){
           return /^[a-fA-F]+[1-6]{1}/;
      }else{
           return /^[a-cA-C]+[1-8]{1}/;
      }
}

您好,我尝试删除引号,但如果达到以下错误10$digest()迭代次数,则无效。流产!在最后5次迭代中触发的观察器:当应用程序的模型变得不稳定,并且每个$digest周期触发状态更改和随后的$digest周期时,就会发生此错误。Angular检测到这种情况,并防止无限循环导致浏览器无响应。根据错误代码,当我尝试检查问题时,如果没有引号,seatPattern函数将执行无限次,但不确定原因。我尝试使用scope变量,并按预期工作。谢谢