2016-04-01 2 views
0

Я довольно новый с AngularJS, поэтому, пожалуйста, извините мое невежество и неправильную терминологию.Добавление новых свойств объекта в ng-repeat для каждого объекта

У меня есть контроллер, называемый activityController, который возвращает массив объектов активности. Каждый объект активности имеет некоторые свойства, которые я могу отображать в представлении, используя ng-repeat = «активность в действиях».

Одним из свойств является большая строка, которую мне нужно взломать и существенно добавить в новые свойства объекта активности (я знаю, что это ужасно, но это из старой системы).

Выполнение функции в ng-repeat, как ng-repeat = "активность в getNewProperties (действия)", где я бы циклически выполнял каждое действие и возвращал массив обратно в ng-repeat.

ИЛИ

ли я просто сделать функцию в области, которая будет возвращать каждое свойство, что я ищу.

В идеале я бы просто использовал activity.newDetails.NewValue, который заставляет меня beielve мне нужно запустить мою функцию во всех объектах активности до того, как они будут переданы в ng-repeat в представлении.

Извините, что знаю, что это не очень детали. Я могу попытаться добавить более короткое время.

+0

Лучше всего сделать данные, которые вид связывает со 100% тем, чем он должен быть. Другими словами, не пытайтесь ng-повторять что-то, что не совсем то, что вы хотите. Сначала измените его, затем привяжите. Вероятно, не лучше использовать функцию в этом случае, поскольку преобразование может выполняться много раз. –

+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; 
}; 

Эта функция будет работать в каждом $ переваривать цикла. Кроме того, что это ресурс, это также означает, что если вы вносите изменения в измененные свойства (в этом случае 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

Большое вам спасибо. Это помогает мне понять лучший способ добиться того, что я искал. –

Смежные вопросы