2016-04-09 3 views
4

http://jsfiddle.net/4v2jaaxh/Плюс минус в angularjs зрения

<div ng-repeat="json in myJson"> 
     <li>{{json.name}}</li> 

    </div><h1> 
    total: 
    </h1> 

$scope.myJson = [ 
    { 
    "id": "1", 
    "name": "banana", 
    "price": 12, 
    "qty": 3, 
    }, 
    { 
    "id": "2", 
    "name": "watermelon", 
    "price": 12.9, 
    "qty": 4, 
    } 
] 

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

+1

, что тотально здесь? – Ved

+0

@Ved 12 + 12.9 - это цена. –

+0

@CodyJonas, это немного запутанно, я думал, что итого = '12 * 3 + 12.9 * 4' .plz Редактировать вопрос –

ответ

2

Вы можете поместить функцию в контроллере:

$scope.getSum = function() { 
    return $scope.myJson.reduce(function(a,b) {return a.price * a.qty + b.price * b.qty}); 
} 

, а затем использовать его в HTML:

total:{{getSum()}} 

Вот рабочий пример: jsFiddle

+0

чистое решение! –

+0

любая идея, как я могу обновить итоговое значение при изменении выбранного значения? http://jsfiddle.net/yx97x0xk/1/ –

+1

Вы можете избавиться от 'Array.map'. ** [JSFiddle] (http://jsfiddle.net/4v2jaaxh/8/) **. – Rajesh

0

Вы можете использовать дополнения присвоение

angular.forEach($scope.myJson, function(val) { 
$scope.totalPrice += val.price; 
$scope.totalQty += val.qty; 
}); 

demo fiddle

2

Вы можете поставить функцию (полная стоимость/For Кол-во Всего - В данном случае пример является цена всего) в контроллере:

angular.module('app',['QuickList']).controller('mainCtrl', function($scope){ 

    $scope.myJson = [ 
    { 
    "id": "1", 
    "name": "banana", 
    "price": 12, 
    "qty": 3, 
    }, 
    { 
    "id": "2", 
    "name": "watermelon", 
    "price": 12.9, 
    "qty": 4, 
    }] 

    $scope.total = function(){ 
    var total = 0; 
    for(var i = 0; i < $scope.myJson.length; i++){ 
    total += $scope.myJson[i].price; 
    } 
    return total; 
    } 

$scope.total(); 
}) 

Вот рабочий пример: http://jsfiddle.net/Lht7fodj/

0

В контроллере написать следующий код после того, как был определен массив:

$scope.total = 0; 
for(var i=0; i< $scope.myJson.length; i++){ 
    $scope.total += $scope.myJson[i].price * $scope.myJson[i].qty; 
} 

Затем, на ваш взгляд, используйте интерполяцию как {{total}}.

Лучше всего поставить вышеуказанный код в функцию и вызвать ее в операторе интерполяции.

0

положить в HTML:

</div><h1> 
total:{{mytotal}} 
</h1> 

и в контроллере:

$scope.mytotal= $scope.myJson[0].price+$scope.myJson[1].price; 
Смежные вопросы