2016-04-01 25 views
0

我對AngularJS相當新,所以請原諒我的無知和不適當的術語。在ng-repeat中爲每個對象添加新的對象屬性

我有一個名爲activitiesController的Controller,它返回一個活動對象數組。每個活動對象都有一些屬性,我可以在視圖中使用ng-repeat =「activity in activity」顯示。

其中一個屬性是我需要破解的一個大字符串,基本上添加到活動對象的新屬性(我知道這很可怕,但它來自遺留系統)。

我是否在ng-repeat中運行一個函數,如ng-repeat =「getNewProperties(activities)中的活動」,我將循環每個活動並將數組返回到ng-repeat。

OR

難道我只是在做這將返回我要找的每個屬性範圍的功能。

理想情況下,在視圖中,我只是使用activity.newDetails.NewValue,這使我beielve我需要在所有活動對象上運行我的函數,然後它們被傳遞到視圖中的ng重複。

對不起,我知道這不是很詳細,我可以嘗試添加更多。

+0

最好將數據視爲綁定到100%它所需要的數據。換句話說,不要試圖重複一些不太符合你想要的東西。首先進行轉換,然後進行綁定。在這種情況下可能不是最好使用函數,因爲轉換可能會運行很多次。 –

+0

感謝您的迴應,確實有很多意義。有些東西還沒有完全點擊。我感謝你的解釋。乾杯! –

回答

1

我是否在ng-repeat中運行一個函數,如ng-repeat =「getNewProperties(activities)」中的活動,我將遍歷每個活動並將數組返回到ng-repeat。

比方說,你這樣做和功能看起來是這樣的:

$scope.getNewProperties = function(activities) { 
    var modifiedActivities = []; 
    for (var i = 0; i < activities.length; i++) { 
    var modifiedActivity = activities[i]; 
    modifiedActivity.foo = "bar"; 
    modifiedActivities.push(modifiedActivity); 
    } 
    return modifiedActivities; 
}; 

該功能將在每$消化週期運行。除了耗費資源外,還意味着如果修改了修改後的屬性(在這種情況下爲foo),下次該函數運行時,該屬性將被該函數覆蓋。

只要獲取數據,您要做的就是修改$scope.activities。這種方式只會發生一次,除非刷新數據。例如

$http.get("http://somewebsite/api").then(function(response) { 
    $scope.activities = response.data; 

    for (var i = 0; i < $scope.activities.length; i++) { 
    // modify properties 
    } 
}); 
+0

非常感謝。這有助於我理解實現我所尋找的最佳方式。 –