2016-07-06 80 views
0

in angularjs modal我試圖顯示所有具有級別4,但我只有一個類。請我應該如何改變我可以爲了得到所有的類javascript/angularjs通過數組循環顯示只有一個對象

$scope.openClass = function (classes) { 
    $log.info("classes",classes); 
    var modalInstance = $modal.open({ 
     templateUrl: 'classes.html', 
     controller: 'ModalClassInstanceCtrl', 
     resolve: { 
      info: function() { 
       var info = {}; 
       for (var i=0;i<classes.length;i++){      
        if (classes[i].level==4){       
         info['name']= classes[i].name; 
         $log.info("classinfo",info);        
        } 
       }     
       $log.info(info); 
       return info; 
      } 
    } 
}); 

在$登錄,如果for循環顯示我只有一個後病情告訴我,他們兩個在我的情況下,寫入類,但在$日誌

+2

首先,你應該在你的'爲'循環。沒有它,它會假設'我是一個全局變量。如果在腳本中使用另一個名爲'i'的變量,則會產生一些意想不到的結果。 –

+0

而且它不斷覆蓋這段代碼中的info ['name'],所以你只會得到1個結果。 – Matheno

+0

我已經添加了var到我的,但我怎麼能防止它覆蓋,我試圖用break;但它只是在對象之後中斷,並且永遠不會繼續 – george

回答

1

你可以使用filter方法,如下:

var filteredArray = classes.filter(function(value) { 
    return value.level == 4; 
)); 

它後,如果您想採摘僅這些項目的名稱,你可以做到以下幾點:

var names = filteredArray.map(function(obj) { 
    return obj.name; 
} 

如果您經常會這樣做,你可以編寫一個這樣抽象出地圖的函數:

function pluck(array, key) { 
    return array.map(function(item) { 
    return item[key]; 
    }); 
} 
+0

謝謝developer033 filteredArray是我想要感謝的 – george

0

我認爲,你重寫你參數 「名」

info['name']= classes[i].name; 

如果你想收藏,你應該

var info = []; 
info.push(classes[i].name)