Как получить расширение имени файла в AngularJS?

Samim спросил: 28 апреля 2018 в 09:22 в: angularjs

Я получаю массив, который я использую в ng-repeat в AngularJS. В этом массиве есть несколько имен файлов, таких как abc.pdf, xyz.jpg, test.png

Теперь из этих имен файлов я хочу получите расширение этих файлов. Как это сделать в AngularJS / HTML?


4 ответа

Есть решение
navneet35371 ответил: 28 апреля 2018 в 09:49

Вы можете использовать метод подстроки javascript:

fileName.substr(fileName.lastIndexOf('.')+1)

Если вы хотите использовать его непосредственно в html, я бы предложил вам создать фильтр на основе вышеуказанной логики.

angular.module('App.filters', [])
    .filter('ext', [function () {
        return function (text) {
            return text.split('.').pop();
        };
    }]);

И вы можете использовать его в шаблонах как:

{{filename | ext}}
Aleksey Solovey ответил: 28 апреля 2018 в 09:29
почему не просто split? "abc.pdf".split(".")[1]
PhiLho ответил: 28 апреля 2018 в 09:32
@AlekseySolovey Имя файла может иметь точки внутри самого имени ... Например. foo.tar.gz, bar.user.js и т. д. Вы все равно можете использовать split и получить последний элемент массива, но он становится таким же сложным (если не больше), чем данное решение. И создание массива строк просто для этого не очень эффективно (очень незначительная точка).
navneet35371 ответил: 28 апреля 2018 в 09:41
Опять же, если вы хотите использовать split .. вы можете использовать fileName.split ("."). Pop (), который вернет последний элемент массива, но снова создание массива строк будет не очень эффективным.
Aleksey Solovey james ответил: 28 апреля 2018 в 09:45

Преобразуйте (сопоставьте) массив перед его отображением, например.

var fileNames = ['abc.pdf', 'xyz.jpg']
$scope.files = fileNames.map(function (fileName) {
  return {
    name: fileName,
    ext: fileName.substr(fileName.lastIndexOf('.') + 1)
  }
});

Затем выполните рендеринг

<ul>
  <li ng-repeat="file in files">{{file.name}} {{file.ext}}</li>
</ul>
Toan Nhu ответил: 28 апреля 2018 в 09:32

Просто используйте простой Javascript:

array.map(elem => elem.substring(elem.indexOf('.') + 1)

Это вернет вам новый массив расширения файла.

Aravind ответил: 28 апреля 2018 в 09:33
"abc.pdf".split(".")[{Index Of Last Element}]

, который в большинстве случаев будет

abc.pdf".split('.')["abc.pdf".split('.').length -1];

Это должно сделать трюк.