如何检查剑道上传中是否存在所选文件?

时间:2016-02-24 15:55:38

标签: javascript angularjs kendo-ui

我想了解为什么我们检查索引数组值为-1,如果已经存在fileName,则我遇到kendo upload onSelect的问题阻止用户加载文件并显示showErr。当我们使用一个文件时,它可以正常工作,但是当我们选择多个文件时,如果已经加载了一个文件,它应该显示为err,但它不会发生。

main.html中

 <div class="row" >
                <div class="form-group col-md-12 fieldHeight" ng-hide="errorUpDoc" >
                    <label for="attachment" class="col-md-4" ng-show="!editDocMode">File name:</label>
                    <div class="col-md-6" ng-show="!editDocMode">
                         <input name="file"
                   type="file"
                   kendo-upload="fileAttachment"
                   k-upload="addMorePostParameters"
                   k-success="onSuccess"
                   k-error = "onError"
                   k-multiple="true"
                   ng-disabled="disableDocFields"
                   k-options="fileAttachmentOptions"
                   k-select="onSelect"
                   k-remove="onUploadRemove"
                   />
                   <p ng-show="showErr" class="text-danger">File name already exists</p>
                    </div>
                </div>
        </div>

main.js

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

2 个答案:

答案 0 :(得分:5)

当数组中不存在该元素时,indexOf返回-1。

答案 1 :(得分:1)

索引 Parse.Cloud.beforeSave('posts', function (req, res) { var uname = 'xxxxx'; var user = Parse.User.current(); user.fetch().then(function(fetchedUser){ uname = fetchedUser.getUsername(); }, ); if (uname != 'michael') { res.error('This user is not allowed'); } else { res.success(); } }); 表示该值在数组中没有索引。