From 95d1768c7742e383bc8e9dda2279efd74b0b4131 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Wed, 24 Nov 2010 16:28:17 -0800 Subject: docs for angular.Array.sum --- src/apis.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/apis.js b/src/apis.js index 31d2b687..417670b5 100644 --- a/src/apis.js +++ b/src/apis.js @@ -76,6 +76,61 @@ var angularArray = { }); */ 'indexOf': indexOf, + + + /** + * @workInProgress + * @ngdoc function + * @name angular.Array.sum + * @function + * + * @description + * This function calculates the sum of all numbers in `array`. If the `expressions` is supplied, + * it is evaluated once for each element in `array` and then the sum of these values is returned. + * + * @param {Array} array The source array. + * @param {(string|function())=} expression Angular expression or a function to be evaluated for each + * element in `array`. The array element becomes the `this` during the evaluation. + * @returns {number} Sum of items in the array. + * + * @example + + + + + + + + + + + + + + + +
QtyDescriptionCostTotal
{{item.qty * item.cost | currency}}[X]
add itemTotal:{{invoice.items.$sum('qty*cost') | currency}}
+ + @scenario + //TODO: these specs are lame because I had to work around issues #164 and #167 + it('should initialize and calculate the totals', function() { + expect(repeater('.doc-example-live table tr', 'item in invoice.items').count()).toBe(3); + expect(repeater('.doc-example-live table tr', 'item in invoice.items').row(1)). + toEqual(['$99.50']); + expect(binding("invoice.items.$sum('qty*cost')")).toBe('$99.50'); + expect(binding("invoice.items.$sum('qty*cost')")).toBe('$99.50'); + }); + + it('should add an entry and recalculate', function() { + element('.doc-example a:contains("add item")').click(); + using('.doc-example-live tr:nth-child(3)').input('item.qty').enter('20'); + using('.doc-example-live tr:nth-child(3)').input('item.cost').enter('100'); + + expect(repeater('.doc-example-live table tr', 'item in invoice.items').row(2)). + toEqual(['$2,000.00']); + expect(binding("invoice.items.$sum('qty*cost')")).toBe('$2,099.50'); + }); + */ 'sum':function(array, expression) { var fn = angular['Function']['compile'](expression); var sum = 0; -- cgit v1.2.3