Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何在Angular$parsers管道中修改ng模型_Angularjs_Parsing_Angularjs Directive_Angular Ngmodel - Fatal编程技术网

Angularjs 如何在Angular$parsers管道中修改ng模型

Angularjs 如何在Angular$parsers管道中修改ng模型,angularjs,parsing,angularjs-directive,angular-ngmodel,Angularjs,Parsing,Angularjs Directive,Angular Ngmodel,我在表单中有一个box.widthng模型值,用于以英寸为单位存储框的宽度。不过,我希望用户能够看到“英尺”和“英寸”的宽度。在大多数情况下,我让它工作。我有两条指令,将总英寸格式化为英尺和剩余英寸 例如: 问题: 当用户修改表单中的英寸数时触发的解析器只能在某种程度上可靠地工作。如果用户反复单击向上勾号箭头,英寸字段有时将保持在11(根据需要,作为最大值),但有时允许输入12。从控制台日志判断,解析器在某些时候甚至没有被触发(可能是由于我在解析器中设置element.val()的方式)。下面是

我在表单中有一个
box.width
ng模型值,用于以英寸为单位存储框的宽度。不过,我希望用户能够看到“英尺”和“英寸”的宽度。在大多数情况下,我让它工作。我有两条指令,将总英寸格式化为英尺和剩余英寸

例如:

问题:

当用户修改表单中的英寸数时触发的解析器只能在某种程度上可靠地工作。如果用户反复单击向上勾号箭头,英寸字段有时将保持在11(根据需要,作为最大值),但有时允许输入12。从控制台日志判断,解析器在某些时候甚至没有被触发(可能是由于我在解析器中设置element.val()的方式)。下面是相关的解析器函数:

function inchesOnlyParser(input) {
   var numFeet = Math.floor(ngModelController.$modelValue / 12);
   var inchesEntered = input;

   if (inchesEntered > 11) {
       var small = numFeet * 12 + 11;
       element.val(11);
       return small;
   }

   return numFeet * 12 + inchesEntered;
}
起初,我尝试在英寸细分的输入字段中输入
max=11
,但这会导致angular在总英寸数上输入一个最大值,因此这对我来说不是一个解决方案

我尝试过使用中提到的各种ngModelController方法,但没有找到适合我的解决方案,包括$rollbackViewValue、$render、$setViewValue等的组合。不过,我可能对文档的理解不太正确


正如我所暗示的,我想要的UI是用户在英寸输入字段中不能超过11英寸;如果不涉及角度,它的作用类似于
max=11
设置。

inchesolly
指令中,而不是使用
element.val(11)设置输入元素的值,设置视图值并再次渲染

ngModelController.$setViewValue(11);
ngModelController.$render(); 

相关的问题

非常有意义。文档中说“预期ng model指令的用户将实现此方法。”因此我试图编写
ngModelController.$render=function(){…}
,但看起来我错了,因为这是必要的。但是,回顾您的建议和底部的示例,如果我将您的建议与
ngModelController.$render=function(){element.val(ngModelController.$viewValue);}
一起实现,它也会起作用,谢谢!