Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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_Validation - Fatal编程技术网

AngularJS-输入验证状态错误

AngularJS-输入验证状态错误,angularjs,validation,Angularjs,Validation,我有一个输入,在ng change上,我传递表单。在函数中输入,以便根据输入状态(错误、有效/无效…)执行一些操作。但奇怪的是: 当我记录我传递的输入时,我在控制台输出中看到input.$valid=false这是正确的值。但是当我记录input.$valid本身时,我发现它是真的,而不是假的!为什么会这样???当我试图解析输入时,$valid得到了错误的值,我无法基于该值进行计算 以下是输入: <input ng-model="..." type="radio"

我有一个输入,在
ng change
上,我传递
表单。在函数中输入
,以便根据输入状态(错误、有效/无效…)执行一些操作。但奇怪的是: 当我记录我传递的输入时,我在控制台输出中看到
input.$valid=false
这是正确的值。但是当我记录
input.$valid
本身时,我发现它是真的,而不是假的!为什么会这样???当我试图解析
输入时,$valid
得到了错误的值,我无法基于该值进行计算

以下是输入:

<input ng-model="..."
       type="radio"
       name="input"
       ng-value={{v}}
       ng-disabled="field.readonly"
       ng-required="field.required"
       ng-init="test(Form.input)"
       ng-change="test(Form.input)">
下面是日志输出:

// console.log(object);
c {$viewValue: NaN, $modelValue: NaN, $parsers: Array[1], $formatters: Array[1], $viewChangeListeners: Array[1]…}
$dirty: false
$error: Object
$formatters: Array[1]
$invalid: true
$isEmpty: function (a){return F(a)||""===a||null===a||a!==a}
$modelValue: undefined
$name: "input"
$parsers: Array[1]
$pristine: true
$render: function (){c[0].checked=d.value==e.$viewValue}
$setPristine: function (){this.$dirty=!1;this.$pristine=!0;g.removeClass(e,yb);g.addClass(e,Pa)}
$setValidity: function (a,c){p[a]!==!c&&(c?(p[a]&&n--,n||(k(!0),this.$valid=!0,this.$invalid=!1)):(k(!1),this.$invalid=!0,this.$valid=!1,n++),p[a]=!c,k(c,a),l.$setValidity(a,c,this))}
$setViewValue: function (d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Pa),g.addClass(e,yb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==
$valid: false
$viewChangeListeners: Array[1]
$viewValue: undefined
__proto__: Object


// console.log(object);
true 


// console.log(JSON.stringify(object));
{"$viewValue":null,"$modelValue":null,"$parsers":[null],"$formatters":[null],"$viewChangeListeners":[null],"$pristine":true,"$dirty":false,"$valid":true,"$invalid":false,"$name":"input","$error":{}} 

更新:我想我可能找到了什么。当我这样做时:

<input ...
       ng-init="{{test(Form.input)}}"
       ng-change="{{test(Form.input)}}">

我相信您的代码没有问题,只是您读取控制台输出的方式有问题

通过执行
console.log(object)
可以“打印”对象的JavaScript表示。这就像你直接看对象的引用一样。这意味着,如果随后更改了对象,您也将看到这些更改。将其视为对象的实时表示

在其他日志(
console.log(object.$valid);
console.log(JSON.stringify(object));
)上,这不会发生,因为您只是打印字符串/布尔值,没有对象表示

如果要检查真实对象的内容,请坚持以下步骤:

console.log(JSON.stringify(object));

我相信您的代码没有问题,只是您读取控制台输出的方式有问题

通过执行
console.log(object)
可以“打印”对象的JavaScript表示。这就像你直接看对象的引用一样。这意味着,如果随后更改了对象,您也将看到这些更改。将其视为对象的实时表示

在其他日志(
console.log(object.$valid);
console.log(JSON.stringify(object));
)上,这不会发生,因为您只是打印字符串/布尔值,没有对象表示

如果要检查真实对象的内容,请坚持以下步骤:

console.log(JSON.stringify(object));

我相信您的代码没有问题,只是您读取控制台输出的方式有问题

通过执行
console.log(object)
可以“打印”对象的JavaScript表示。这就像你直接看对象的引用一样。这意味着,如果随后更改了对象,您也将看到这些更改。将其视为对象的实时表示

在其他日志(
console.log(object.$valid);
console.log(JSON.stringify(object));
)上,这不会发生,因为您只是打印字符串/布尔值,没有对象表示

如果要检查真实对象的内容,请坚持以下步骤:

console.log(JSON.stringify(object));

我相信您的代码没有问题,只是您读取控制台输出的方式有问题

通过执行
console.log(object)
可以“打印”对象的JavaScript表示。这就像你直接看对象的引用一样。这意味着,如果随后更改了对象,您也将看到这些更改。将其视为对象的实时表示

在其他日志(
console.log(object.$valid);
console.log(JSON.stringify(object));
)上,这不会发生,因为您只是打印字符串/布尔值,没有对象表示

如果要检查真实对象的内容,请坚持以下步骤:

console.log(JSON.stringify(object));

您是否仅出于测试目的而使用
ng init
ng change
中的函数?@Malkus否。我想根据
Form.input执行一些其他代码。$valid
为真/假。但是我需要确保一切正常,所以我使用
test()
forn现在。您是否尝试过使用
$watch
it来显示数据和调用函数,这会更有效。是的,但问题是当我尝试解析
表单.input.$valid
时,我得到了错误的值。您是否仅出于测试目的而使用
ng init
ng change
中的函数?@Malkus no.i要根据
Form.input.$valid
为真/假来执行其他代码。但是我需要确保一切正常,所以我使用
test()
forn现在。您是否尝试过使用
$watch
it来显示数据和调用函数,这会更有效。是的,但问题是当我尝试解析
表单.input.$valid
时,我得到了错误的值。您是否仅出于测试目的而使用
ng init
ng change
中的函数?@Malkus no.i要根据
Form.input.$valid
为真/假来执行其他代码。但是我需要确保一切正常,所以我使用
test()
forn现在。您是否尝试过使用
$watch
it来显示数据和调用函数,这会更有效。是的,但问题是当我尝试解析
表单.input.$valid
时,我得到了错误的值。您是否仅出于测试目的而使用
ng init
ng change
中的函数?@Malkus no.i要根据
Form.input.$valid
为真/假来执行其他代码。但是我需要确保一切都正常工作,所以我现在使用
test()
了。您是否尝试过使用
$watch
它来显示数据和调用函数,这会更有效。是的,但问题是当我尝试解析
表单.input.$valid
时,我得到了错误的值。否,
控制台.log(JSON.stringify(对象);包含错误的值。输入无效,表明它是有效的。当我在HTML(视图)中放入代码> {{Frase.Value}} /代码>时,我也看到输入无效。