2016-11-11 68 views
0

所以,我有含有未知數文件的某個文件夾archives顯示他們,我知道:過濾文件,並使用NG-重複(JS,角)

  • 所有的人都得到了.7z壓縮擴展
  • 一半用字母AB和另一半開始 - CD

  • 那麼文件夾的內容是這樣的:
  • AB1234567890.7z
  • AB2345678901.7z
  • CD1234567890.7z
  • CD2345678901.7z
  • 等。也就是說,我可以做這樣的事情:

    <a href="archives/AB1234567890.7z" download="{{fileName}}">Download</a> 
    

    並點擊它會開始下載壓縮文件名稱爲AB1234567890.7z。沒關係,但顯然我不能寫這樣的鏈接,它必須用ng-repeat完成。所以,問題是 - 如何顯示的鏈接,其中第一清單將是列表的鏈接與AB開始2只列出了 - 這與CD開始,分別。任何幫助,將不勝感激:)

    +0

    你能分享一下你試過的代碼嗎?時間?這會更好地闡明你的問題。它有點令人困惑 –

    +0

    @Manoj Shevate我自己不知道如何執行 - 這就是爲什麼我在這裏 - 尋找更有經驗的傢伙的提示:)據我所知,它可以像'$ scope.firstList = files.filter((文件)=> file.substring(0,2)===「AB」'然後'ng-repeat ='file in firstList' ... –

    回答

    2

    這個怎麼樣:

    angular.module('app',[]).controller('test', ['$scope', '$http', function($scope, $http){ 
     
    //$http({ method: 'GET', url: '/getNames'}).then(function(names) { 
     
    // $scope.files = names; 
     
    //}) 
     
        $scope.files = ['AB1234567890.7z', 
     
            'AB2345678901.7z', 
     
            'CD1234567890.7z', 
     
            'CD2345678901.7z']; 
     
        $scope.startWith = function(file, name){  
     
         return file.indexOf(name) == 0; 
     
        } 
     
    }])
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
     
    <div ng-app='app' ng-controller='test'> 
     
    <p>First list</p> 
     
        <div ng-repeat='file in files' ng-if="startWith(file, 'AB')"> 
     
        <a href='archives/{{file}}'>{{file}}</a> 
     
        </div>  
     
    <p>Second list</p> 
     
        <div ng-repeat='file in files' ng-if="startWith(file, 'CD')"> 
     
        <a href='archives/{{file}}'>{{file}}</a> 
     
        </div> 
     
    </div>

    +0

    找好一個網址,但我怎麼在控制器宣佈'$ scope.files'? –

    +0

    想這必須由服務器端從文件夾中完成了...我的意思是,名單... –

    +0

    @impregnablefiend,您可以使用,例如,'$ http'服務從服務器獲取名稱,然後分配返回名稱'$ scope.files'變量,在我的情況。 –

    0

    我認爲這將有助於你

    <div ng-controller="AppCtrl" layout="row" ng-cloak="" ng-app="MyApp"> 
        <div layout="column" flex> 
         <a ng-repeat="file in archivesAB" href="archives/{{file}}" download="{{file}}">{{file}}</a> 
        </div> 
        <div layout="column" flex> 
         <a ng-repeat="file in archivesCD" href="archives/{{file}}" download="{{file}}">{{file}}</a> 
        </div> 
    </div> 
    
    (function() { 
        'use strict'; 
        angular 
        .module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache']) 
        .controller('AppCtrl', AppCtrl); 
    
        function AppCtrl ($scope, $log) { 
        $scope.archivesAB = [ 
         'AB1234567890.7z', 
         'AB2345678901.7z' 
        ]; 
    
        $scope.archivesCD = [ 
         'CD1234567890.7z', 
         'CD2345678901.7z' 
        ]; 
    
        } 
    })(); 
    

    這裏是工作codepen

    +0

    我不能在控制器中打印兩個集合 - 它們是未知的! ...他們可以改變任何時間 - 就像我說我知道他們在文件夾'檔案'和一些以'AB'開始,其他 - 'CD' ... –

    +0

    據我所知,你不能。使用客戶端JavaScript作爲AngularJS但是,如果你有這樣的文件在你的服務器,你可以只訪問的URL返回列表供您閱讀從一個文件夾中的文件 – Sanfelice

    +0

    你可以使用這樣的事情: $超時(函數() $ http.get('url')。success(function(respon) se){ $ scope.archivesAB = response.archivesAB; $ scope.archivesCD = response.archivesCD; }); 5000); 這將訪問返回您列出每個5S – Sanfelice