javascript - 在 Controller 中使用 $setValidity

标签 javascript angularjs angularjs-controller angularjs-forms

我正在尝试对文件更改进行一些验证。这是我的代码:

View /模板

<input type="file" name="file" id="file"  
       onchange="angular.element(this).scope().setFile(this)" 
       required />

<span class="error" ng-show="myForm.file.$error.required">Error</span>
<span class="error" ng-show="myForm.file.$error.size">Selected file is too large</span>
<span class="error" ng-show="myForm.file.$error.filetype">Unsupported File type</span>

Controller

angular.module("myapp").controller("myctrl", function($scope) {
  $scope.setFile = function(element) {
    $scope.$apply(function($scope) {
      var fileObject = element.files[0];
      $scope.file.fileType = 
         fileObject.type.toUpperCase().substring(fileObject.type.indexOf("/") + 1);

      // Validation
      if (!$scope.isValidFileType($scope.file.fileType)) {
        myForm.file.$setValidity("myForm.file.$error.filetype", false);
      }

      if (fileObject.size > 1000*1000*10) {
        myForm.file.$setValidity("myForm.file.$error.size", false);
      }
    });
  };

  $scope.isValidFileType = function(fileExtension) {
    var supportedExtensions = ["doc", "docx", "ppt", "pptx", "jpg", "gif", "png"]; // etc.
    return (jQuery.inArray(fileExtension, supportedExtensions) > -1);
  }
});

但是现在对 $setValidity 的调用不起作用。
有什么想法吗?

最佳答案

这一行:

myForm.file.$setValidity("myForm.file.$error.size", false);

应该是

$scope.myForm.file.$setValidity("size", false);

关于javascript - 在 Controller 中使用 $setValidity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14363656/

相关文章:

javascript - AngularJS 在 ng-* 语句中使用变量

javascript - 动态更改表单错误的 Angular 工具提示内容

angularjs - 从 Controller 更新指令变量

javascript - 将 Browserify 与 Angular JS 结合使用 - - 将服务传递到 Controller 中

javascript - 根据变量使 ng-click 调用某个方法

javascript - 根据用户 View 更新 D3.JS 可滚动折线图上的轴

javascript - AngularJs 单元测试失败,因为 Karma 无法识别 Controller 中的监听器 $scope.$

javascript - 清除 jQgrid

javascript - 发送带有两个参数的 promise

angularjs - ng-repeat 插入空 anchor 标签