javascript - 未捕获的类型错误 : $scope. mvp.$setUntouched 不是函数 angularjs 1.4

标签 javascript css angularjs

我在尝试从我的表单中删除 ngTouch 类时遇到以下错误。这个错误清楚地反射(reflect)了我正在使用已经具有此功能的angularjs1.4。但是我仍然收到此错误

$scope.mvp.$setUntouched()
VM3202:1 Uncaught TypeError: $scope.mvp.$setUntouched is not a function
    at n.eval (eval at evaluate (unknown source), <anonymous>:1:12)
    at Object.InjectedScript._evaluateOn (<anonymous>:895:55)
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
    at Object.InjectedScript.evaluateOnCallFrame (<anonymous>:954:21)
    at n.$scope.resetPerson (http://localhost:55607/app/controller/personController.js:20:19)
    at fn (eval at <anonymous> (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js:212:83), <anonymous>:2:224)
    at http://localhost:55607/Scripts/angular-touch.min.js:12:197
    at n.$get.n.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js:134:493)
    at n.$get.n.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js:135:217)
    at HTMLButtonElement.<anonymous> (http://localhost:55607/Scripts/angular-touch.min.js:12:179)

这是我的 CSS

input.ng-invalid.ng-touched.ng-pristine {
    border-color: #FA787E;
    box-shadow: 0 0 10px #FA787E;
  }

input.ng-valid.ng-touched {
    border-color: #78FA89;
    box-shadow: 0 0 10px #78FA89;
}

Controller 重置方法

$scope.resetPerson = function () {
            angular.copy({}, mvp);
            $scope.init();
            $scope.mvp.$setPristine();
            $scope.mvp.$setUntouched();
        }

表单定义

<form novalidate name="mvp" class="form-horizontal" role="form">

这是我定义的 css 问题吗?

编辑

我能够让它工作。问题出在我在 Controller 中的重置方法中。

$scope.resetPerson = function () {
            angular.copy({}, $scope.person); //this fixed the issue
            $scope.init();
            $scope.mvp.$setPristine();
            $scope.mvp.$setUntouched();
        }

我的模型是 $scope.person,我设置的是 angular.copy({}, mvp);,这意味着我设置的是 form mvp = {}。但是我不明白为什么会出现错误 $setUntouched is not a function

最佳答案

问题是您的表单没有按名称发送到您的 Angular 函数。

 $scope.master = {};
 $scope.reset = function(mvp) {
    if (mvp) {
       mvp.$setPristine();
       mvp.$setUntouched();
    }
       $scope.person = angular.copy($scope.master);
 };

我试着用一个问题来回答你的问题。它没有成功(:这个应该......让我知道

它是未定义的,因为您将表单设置为具有副本的对象,而 setUntouched 是表单 Controller 而不是对象 Controller

关于javascript - 未捕获的类型错误 : $scope. mvp.$setUntouched 不是函数 angularjs 1.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440731/

相关文章:

javascript - Firefox 扩展中的 localStorage 抛出 "The operation is insecure."异常

JQuery 这个 + class.animate()

html - CSS 链接的相对路径解析

html - Internet Explorer 上的文本旋转

angularjs - 我怎样才能完成这个CSS网格

angularjs - 如何使用 angular-ui-router v0.2.5(允许模块)在单独的 View 中使用全局页脚

javascript - 如何发送变量函数 Angular 服务?

javascript - 提取包含换行符之间匹配的文本

javascript - JQuery .each() 回调函数不会在每次迭代/循环中运行

javascript - 如何阻止一个innerHtml表格一遍又一遍地重复?