2016-09-13 66 views
1

我想顯示每隻動物的最後活動狀態,而活動狀態和動物可能隨時間而改變。由於動態JSON更改而更新AngularJS ng-repeat表

首先,我得到這個JSON:

$scope.JSON = [ 
{"Animal" : "Horse", "Status" : "awake", "LastUpdate" : { "$date" : 1473248184519 }}, 
{"Animal" : "Rabbit", "Status" : "awake", "LastUpdate" : { "$date" : 1473248194240 }}, 
{"Animal" : "Rabbit", "Status" : "eating", "LastUpdate" : { "$date" : 1473249639255 }}, 
{"Animal" : "Horse", "Status" : "eating", "LastUpdate" : { "$date" : 1473249652549 }}, 
{"Animal" : "Horse", "Status" : "sleeping", "LastUpdate" : { "$date" : 1473249656338 }} 
] 

如果動物正在做一些新的東西,JSON的自動變化,F.E.兔子現在正在睡覺,如果出現新的動物,f.e.牛:

$scope.JSON = [ 
{"Animal" : "Horse", "Status" : "awake", "LastUpdate" : { "$date" : 1473248184519 }}, 
{"Animal" : "Rabbit", "Status" : "awake", "LastUpdate" : { "$date" : 1473248194240 }}, 
{"Animal" : "Rabbit", "Status" : "eating", "LastUpdate" : { "$date" : 1473249639255 }}, 
{"Animal" : "Horse", "Status" : "eating", "LastUpdate" : { "$date" : 1473249652549 }}, 
{"Animal" : "Horse", "Status" : "sleeping", "LastUpdate" : { "$date" : 1473249656338 }}, 
{"Animal" : "Rabbit", "Status" : "sleeping", "LastUpdate" : { "$date" : 1473249659505 }}, 
{"Animal" : "Cow", "Status" : "awake", "LastUpdate" : { "$date" : 1473249659505 }}; 
] 

這JSON擴展隨着時間的推移,因此,我想在這樣的表以僅顯示不同的動物的最後一個值:

動物表範例: Animals Table Example

主要問題是,新的動物隨着時間的推移添加到jSON中,應自動檢測並添加到表中。

我想兩種解決方案:

1,NG-重複+過濾+ limitTo

對於這樣的嘗試,請看看這個Plunker https://plnkr.co/edit/ftea6vd1qaPZaXGusZAN

這爲我提供了幾乎一切除了自動檢測新動物,任何建議

2,對於每個動物

我想創建僅包含一個動物和NG-重複移到該新的JSON(與lastitem)的新子集的JSON創建子集JSONs。通過循環所有動物(如何獲得所有動物?也許作爲一個foreach名單?)我可能會得到每個動物的每個最後狀態?

這是更好,甚至可能嗎?

回答

1

我將創建一個方法來提供數據到NG-重複,而不是直接傳遞JSON ng-repeat="roll in filtering(JSON)

而且該函數將創建類似:

function filtering(animals){ 
    var temp = [].concat(animals); 
    var animalsExisting = []; // To keep track of animals already added 
    return temp.reverse().filter(function(animal){ 
     var notAdded = animalsExisting.indexOf(animal.Animal) === -1; 
     if(notAdded) animalsExisting.push(animal.Animal); 
     return notAdded; 
    }); 
} 

所以將逆轉數組,因此它從最後一次添加開始,並過濾它們只是添加最後一個(因爲它被顛倒過來)。

希望這會有幫助

+0

我嘗試過很多方法,但我仍然有問題,你可以編輯我的plunker嗎?我認爲我的主要問題是各種動物,動物和動物的變數。 – Martin

+1

@Martin,檢查這可能是否有效,並進行1次更改。 https://plnkr.co/edit/OQVjB47bpS9fKubO2lum – taguenizy