2014-12-25 5 views
0

Я получаю массив JSON от службы, которую я создаю, который содержит результат, аналогичный:Доступ к свойствам объекта непосредственно в угловом

[{"_id":"5499aece1d7be6c6a3000001","billName":"Jeep Insurance","startDate":"2014-12-15T00:00:00.000Z","amount":2400,"type":4,"timestamp":"2014-12-23T18:05:02.987Z","__v":0},{"_id":"549bf0597886c3763e000001","billName":"Jeep Leasing","startDate":"2014-12-25T00:00:00.000Z","endDate":"2017-10-14T22:00:00.000Z","amount":16500,"type":4,"timestamp":"2014-12-25T11:09:13.957Z","__v":0}] 

Теперь я хотел бы также получить сумму amount в массив поэтому я могу получить к нему доступ с моей точки зрения. Что, выглядеть следующим образом:

[{"_id":"5499aece1d7be6c6a3000001","billName":"Jeep Insurance","startDate":"2014-12-15T00:00:00.000Z","amount":2400,"type":4,"timestamp":"2014-12-23T18:05:02.987Z","__v":0},{"_id":"549bf0597886c3763e000001","billName":"Jeep Leasing","startDate":"2014-12-25T00:00:00.000Z","endDate":"2017-10-14T22:00:00.000Z","amount":16500,"type":4,"timestamp":"2014-12-25T11:09:13.957Z","__v":0},{"total":18900}] 

Однако, если я показываю {{variablename}}, на мой взгляд, он возвращает:

[{"_id":"5499aece1d7be6c6a3000001","billName":"Jeep Insurance","startDate":"2014-12-15T00:00:00.000Z","amount":2400,"type":4,"timestamp":"2014-12-23T18:05:02.987Z","__v":0},{"_id":"549bf0597886c3763e000001","billName":"Jeep Leasing","startDate":"2014-12-25T00:00:00.000Z","endDate":"2017-10-14T22:00:00.000Z","amount":16500,"type":4,"timestamp":"2014-12-25T11:09:13.957Z","__v":0},{"total":18900}] 

Как я могу получить доступ к значению total напрямую? Не работает, если я попробую:

{{variablename.total}} например.

+0

Показать некоторый код пожалуйста. –

+0

Это массив, к которому вы пытаетесь получить доступ. Вам нужно что-то вроде 'variablename [index] .total' для доступа к' total'. –

ответ

0

мне кажется, вы могли бы реструктурировать ответ от API незначительно:

Выход API:

{ 
    "bills" : [], 
    "total" :<number> 
} 

Markup:

<div ng-repeat="bill in scopeModel.bills">{{bill.billName}}</div> 
<div>Total: {{scopeModel.total}}</div> 
+0

Именно то, что я искал! –

0

Это массив, к которому вы пытаетесь получить доступ.

JS Файл

$scope.variablename = [{"_id":"5499aece1d7be6c6a3000001","billName":"Jeep Insurance","startDate":"2014-12-15T00:00:00.000Z","amount":2400,"type":4,"timestamp":"2014-12-23T18:05:02.987Z","__v":0},{"_id":"549bf0597886c3763e000001","billName":"Jeep Leasing","startDate":"2014-12-25T00:00:00.000Z","endDate":"2017-10-14T22:00:00.000Z","amount":16500,"type":4,"timestamp":"2014-12-25T11:09:13.957Z","__v":0},{"total":18900}]; 

Вы можете использовать ng-repeat перебрать массив и распечатать необходимые значения.

HTML файла

<div ng-repeat="singleItem in variablename"> 
     {{singleItem.total}} 
</div> 
0

Вы можете либо передать variablename к функции totalAmount или могут получить его от $ рамки непосредственно, итерацию по каждому элементу и добавить сумму в общей сложности затем вернуть его

В вид

{{totalAmount(variablename)}} 

В контроллере

$scope.totalAmount = function(v){ 
total=0 
v.forEach(function(element){ 
total +=element.amount; 
}) 
return total; 
} 

Также можно использовать уменьшить()

$scope.variablename= [{"_id":"5499aece1d7be6c6a3000001","billName":"Jeep Insurance","startDate":"2014-12-15T00:00:00.000Z","amount":2400,"type":4,"timestamp":"2014-12-23T18:05:02.987Z","__v":0},{"_id":"549bf0597886c3763e000001","billName":"Jeep Leasing","startDate":"2014-12-25T00:00:00.000Z","endDate":"2017-10-14T22:00:00.000Z","amount":16500,"type":4,"timestamp":"2014-12-25T11:09:13.957Z","__v":0},{"total":18900}]; 

    $scope.total = variablename.reduce(function(total,element) { 
return total+ element.amount; 
}, 0); 

Ввиду

{{total}} 
Смежные вопросы