javascript - 如何使用当前选定的文件检查数组中的属性?

标签 javascript angularjs

我对文件上传有条件,因此 onSelect 我已经实现了条件,fileNames 变量正在获取用户当前选择但尚未保存到数据库的文件列表。 AssessmentData 是保存在数据库中的 Json 响应。那么如果 assessmentData 中已存在 fileNames ,我该如何设置条件抛出错误并阻止用户添加相同的文件名..

main.js

rcsaAssessmentService.getAlldocs(id).then(function(response){
          assessmentData = response.data;
        });


     $scope.onSelect = function (e) {
            var fileNames = $.map(e.files, function(file) { return file.name; }).join(', ');
            selectedFile.forEach(function (file) { 
              if (fileNames === file) { 
                e.preventDefault();
                $timeout(function () {
                  $scope.showErr= true;
                  }); 
              }
              else { 
                $scope.showErr = false; 
                } 
              });
            for ( var i=0; i < e.files.length; i++){
              selectedFile.push(e.files[i].name);
            }
          };

JSON.JS

评估数据响应

[
    {
        "attchDesc": "test ",
        "attchTypLookUpCD": null,
        "riskAssessmentKey": null,
        "uploadedTs": "2015-07-06",
        "fileName": "Risk Assessment_SIT Open Defects_0409.xlsx",
        "uploadedBy": "ZKZ1KCY",
        "riskAssessmentAtachKey": 1115,
        "file": null
    },
    {
        "attchDesc": "test",
        "attchTypLookUpCD": null,
        "riskAssessmentKey": null,
        "uploadedTs": "2015-07-06",
        "fileName": "abc.xlsx",
        "uploadedBy": "ZKZ1KCY",
        "riskAssessmentAtachKey": 1116,
        "file": null
    }
]

最佳答案

我不确定 selectedFile 是什么,但这是查看值是否在数组中的解决方案:

rcsaAssessmentService.getAlldocs(id).then(function(response){
  assessmentData = response.data;
});

$scope.onSelect = function (e) {
  var fileNames = assessmentData.map(function(assesment){
    return assessment.fileName;
  });

  e.files.forEach(function (file) {
    if (fileNames.indexOf(file.name) !== -1) { // filename was present
      e.preventDefault();
      $timeout(function () {
        $scope.showErr= true;
      });
    }
    else {
      $scope.showErr = false;
    }
  });
  for ( var i=0; i < e.files.length; i++){
    selectedFile.push(e.files[i].name);
  }
};

关于javascript - 如何使用当前选定的文件检查数组中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254259/

相关文章:

javascript - 在 AngularJS 组件中从父级到子级的事件通信

javascript - Angular js : How to access $state current page name and params in html

html - 图像始终在 Angular JS View 中挂起

html - ng-repeat 中的条件 CSS 类不起作用

javascript - 在 Nodejs 中将 greenlock-express 与 Express 结合使用

javascript - 无法读取 null 的属性 'style'

javascript - 只有 letterNumber 但不是所有数字

javascript - Angularjs 模态在结果发回之前更新我的父范围

javascript - Cloudinary $.cloudinary.unsigned_upload_tag 不是函数

javascript - mongo 没有返回我更新的对象的 promise