我对AngularJS很新,所以请原谅我的无知和不正确的术语。
我有一个名为activitiesController的Controller,它返回一个活动对象数组。每个活动对象都有一些属性,我可以使用ng-repeat =“活动中的活动”在视图中显示这些属性。
其中一个属性是一个大字符串,我需要分开并基本上添加到活动对象的新属性(我知道这很糟糕,但它来自遗留系统)。
我是否在ng-repeat中运行一个函数,例如ng-repeat =“getNewProperties(activities)中的活动”,我将遍历每个活动并将数组返回到ng-repeat。
OR
我是否只在范围内创建一个函数,它将返回我正在寻找的每个属性。
理想情况下,在视图中我只使用activity.newDetails.NewValue,这使得我需要在所有活动对象上运行我的函数,然后再将它们传递给视图中的ng-repeat。
很抱歉,我知道这不是很详细,我可以尽快添加更多内容。
答案 0 :(得分:1)
我是否在ng-repeat中运行一个函数,例如ng-repeat =" getNewProperties(活动)中的活动"我将遍历每个活动并将数组返回到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;
};
此功能将在每个$ digest周期中运行。除了消耗资源之外,它还意味着如果您对已修改的属性进行更改(在本例中为foo
),则下次运行此函数时,该函数将覆盖该属性。
您要做的是在获取数据后立即修改$scope.activities
。这样,除非刷新数据,否则它只会发生一次。 e.g。
$http.get("http://somewebsite/api").then(function(response) {
$scope.activities = response.data;
for (var i = 0; i < $scope.activities.length; i++) {
// modify properties
}
});