TypeError: Cannot read property '$dirty' of undefined
TypeError: Cannot read property '$dirty' of undefined
我有一个 Angular 表单,名称为 p24Form
<div ng-form="private2" name="p24Form" ng-show="freqSelect == '2.4'" novalidate="" class="ng-pristine ng-valid">
<div class="form-group">
<label class="col-sm-2 control-label">
<span class="edit" data-pk="private_2">WiFi name</span>:
</label>
<div class="col-sm-4">
<input type="text" class="form-control ng-pristine ng-untouched ng-valid" name="freq2_name" ng-model="ssid">
<!-- tooltips: -->
</div>
</div>
</div>
我正在尝试检测它是否变脏或发生变化,然后相应地显示我的保存按钮。
我试过了
试试#1
if ($scope.p24Form.$dirty) {
alert('dirty');
$scope.showSaveBtn = true;
}else{
$scope.showSaveBtn = false;
}
尝试#2
if ($scope.private2.$dirty) {
alert('dirty');
$scope.showSaveBtn = true;
}else{
$scope.showSaveBtn = false;
}
我一直有
TypeError: Cannot read property '$dirty' of undefined
我该如何调试?
您需要访问表单的输入以检查它是否有问题。例如:
$scope.myForm.inputName.$dirty
正如您所指出的,您应该使用表单的名称属性来访问它。
此外,您正在访问 myForm 对象,它只是表单对象,在呈现 DOM 之前我将不可用,$scope.myForm 在控制器初始化时将只是未定义,如果你真的想从控制器访问 $scope.myForm 那么你需要将该代码放在 $timeout 中,这将 运行 $timeout 功能代码在下一个摘要周期中。
$timeout(function(){
$scope.isDirty = $scope.myForm.$dirty;
});
我有一个 Angular 表单,名称为 p24Form
<div ng-form="private2" name="p24Form" ng-show="freqSelect == '2.4'" novalidate="" class="ng-pristine ng-valid">
<div class="form-group">
<label class="col-sm-2 control-label">
<span class="edit" data-pk="private_2">WiFi name</span>:
</label>
<div class="col-sm-4">
<input type="text" class="form-control ng-pristine ng-untouched ng-valid" name="freq2_name" ng-model="ssid">
<!-- tooltips: -->
</div>
</div>
</div>
我正在尝试检测它是否变脏或发生变化,然后相应地显示我的保存按钮。 我试过了
试试#1
if ($scope.p24Form.$dirty) {
alert('dirty');
$scope.showSaveBtn = true;
}else{
$scope.showSaveBtn = false;
}
尝试#2
if ($scope.private2.$dirty) {
alert('dirty');
$scope.showSaveBtn = true;
}else{
$scope.showSaveBtn = false;
}
我一直有
TypeError: Cannot read property '$dirty' of undefined
我该如何调试?
您需要访问表单的输入以检查它是否有问题。例如:
$scope.myForm.inputName.$dirty
正如您所指出的,您应该使用表单的名称属性来访问它。
此外,您正在访问 myForm 对象,它只是表单对象,在呈现 DOM 之前我将不可用,$scope.myForm 在控制器初始化时将只是未定义,如果你真的想从控制器访问 $scope.myForm 那么你需要将该代码放在 $timeout 中,这将 运行 $timeout 功能代码在下一个摘要周期中。
$timeout(function(){
$scope.isDirty = $scope.myForm.$dirty;
});