javascript - 类型错误 : Cannot read property '$dirty' of undefined

标签 javascript angularjs angularjs-validation angularjs-forms

我有一个名为 p24Form

的 Angular 表单
<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

正如您所指出的,您应该使用表单的 name 属性来访问它。

此外,您正在访问 myForm 对象,它只是表单对象,在 DOM 渲染之前我将不可用,$scope.myForm 在 Controller 初始化时将只是未定义,如果您确实想访问 $scope .myForm 来自 Controller ,然后您需要将该代码放入 $timeout 中,该代码将在下一个摘要周期中运行 $timeout 函数代码。

$timeout(function(){
    $scope.isDirty = $scope.myForm.$dirty;
  });

关于javascript - 类型错误 : Cannot read property '$dirty' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44636990/

相关文章:

javascript - if 和 else 在 XMLHttpRequest() 中不进行比较

javascript - 将 Javascript 转换为 PHP 回显以插入 PHP 条件语句

javascript - "myApp"应用程序中的 Angular JS 表单验证。

javascript - 使用angular js验证电话号码

angularjs - 使用 ngpattern 验证自然输入数字

javascript - 如何使用 Protractor 测试 contenteditable 字段?

javascript - Protractor 中的 Json 断言

javascript - 如何使用 angularjs 填充 json 数据?

javascript - Ajax Angular SSL CORS

javascript - 使用 ocLazyLoad 插件加载组件和其他依赖项