Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 获得;生的;无效输入字段中的值_Angularjs - Fatal编程技术网

Angularjs 获得;生的;无效输入字段中的值

Angularjs 获得;生的;无效输入字段中的值,angularjs,Angularjs,我在表单中有一个带有一些验证的输入字段。它就像一个符咒 基本上是这样的: <input class="form-control" type="number" ng-model="zipcode" ng-minlength="5" ng-maxlength="5" id="zipcode" name="zipcode" required > 这里有一个工作平台: 但现在我还想对每一个输入更改做出反应——不管是否有效。因此,例如,如果输入字段包含“1

我在表单中有一个带有一些验证的输入字段。它就像一个符咒

基本上是这样的:

<input
  class="form-control"
  type="number"
  ng-model="zipcode"
  ng-minlength="5"
  ng-maxlength="5"
  id="zipcode"
  name="zipcode"
  required
>

这里有一个工作平台:

但现在我还想对每一个输入更改做出反应——不管是否有效。因此,例如,如果输入字段包含“123”,则该字段无效,并且该值未传输到我的模型-这很好。但我仍然希望获得对Web服务执行一些中间请求的值


有什么想法吗?

以下是我为您的场景提出的建议

基本上,您可以编写一个需要
ngModel
(ngModelController)的指令。ngModelController有一个解析器数组,它调用该数组以管道方式解析视图值。如果验证失败,这些解析器不会更新模型。如果您在这个解析器数组的开头插入一个自定义解析器,那么您可以获取每个视图的更改值,并对其执行任何操作

在这里查看我的plunkr(请参阅控制台)

基本准则是

ngModelCtrl.$parsers.splice(0,0,(function (viewValue) {
              console.log("The view value is:"+viewValue)
                return viewValue;           
            }));

另请参见

首先调用控制器中的表单元素,然后使用
$viewValue
属性:

查看:

<form name="form">
<input
  ...
  ng-model="zipcode"
  ng-change="getRawValue(form)"
  name="zipcode"
  required
>
</form>
$scope.getRawValue = function(form) {
  var rawValue = form.zipcode.$viewValue;
}

Angular 1.3为此引入了一个真正的答案:
allowInvalid
in

例如:



我认为您必须在控制器中处理最小值和最大值才能使其正常工作。非常感谢您提供了极快的Answare。还有:工作起来很有魅力;)再次感谢。在我看来,你的回答很值得一篇博文,所以这里是:太好了!我也有同样的想法。我看了你的帖子,发现你改进了这个实现。在我看来,这应该是正确的答案。它更简单,不需要指令。Jay,谢谢!只需要“form.zipcode.$viewValue”。。简单的解决方案!据我所知,$viewValue与通过解析器运行的值不同,但尚未被视为有效并提交给模型。因此,虽然它们通常是相同的值,但它们并不总是相同的。在我看来,这是处理无效值的最干净的方法。这不需要指令,甚至不需要特殊的函数来使用它。只要把这个放进去,它就行了。我一直在到处寻找这个答案。我只是震惊于这是多么难找到。非常感谢。