lib/clientsidescripts.js
function findAllRepeaterRows(repeater, exact, using) {
  using = using || document;

  var rows = [];
  var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng\\:'];
  for (var p = 0; p < prefixes.length; ++p) {
    var attr = prefixes[p] + 'repeat';
    var repeatElems = using.querySelectorAll('[' + attr + ']');
    attr = attr.replace(/\\/g, '');
    for (var i = 0; i < repeatElems.length; ++i) {
      if (repeaterMatch(repeatElems[i].getAttribute(attr), repeater, exact)) {
        rows.push(repeatElems[i]);
      }
    }
  }
  for (var p = 0; p < prefixes.length; ++p) {
    var attr = prefixes[p] + 'repeat-start';
    var repeatElems = using.querySelectorAll('[' + attr + ']');
    attr = attr.replace(/\\/g, '');
    for (var i = 0; i < repeatElems.length; ++i) {
      if (repeaterMatch(repeatElems[i].getAttribute(attr), repeater, exact)) {
        var elem = repeatElems[i];
        while (elem.nodeType != 8 ||
            !repeaterMatch(elem.nodeValue, repeater)) {
          if (elem.nodeType == 1) {
            rows.push(elem);
          }
          elem = elem.nextSibling;
        }
      }
    }
  }
  return rows;
}
function findAllRepeaterRows(repeater, exact, using) {
  using = using || document;

  var rows = [];
  var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng\\:'];
  for (var p = 0; p < prefixes.length; ++p) {
    var attr = prefixes[p] + 'repeat';
    var repeatElems = using.querySelectorAll('[' + attr + ']');
    attr = attr.replace(/\\/g, '');
    for (var i = 0; i < repeatElems.length; ++i) {
      if (repeaterMatch(repeatElems[i].getAttribute(attr), repeater, exact)) {
        rows.push(repeatElems[i]);
      }
    }
  }
  for (var p = 0; p < prefixes.length; ++p) {
    var attr = prefixes[p] + 'repeat-start';
    var repeatElems = using.querySelectorAll('[' + attr + ']');
    attr = attr.replace(/\\/g, '');
    for (var i = 0; i < repeatElems.length; ++i) {
      if (repeaterMatch(repeatElems[i].getAttribute(attr), repeater, exact)) {
        var elem = repeatElems[i];
        while (elem.nodeType != 8 ||
            !repeaterMatch(elem.nodeValue, repeater)) {
          if (elem.nodeType == 1) {
            rows.push(elem);
          }
          elem = elem.nextSibling;
        }
      }
    }
  }
  return rows;
}
function findAllRepeaterRows ( repeater , exact , using ) { using = using || document ; var rows = [ ] ; var prefixes = [ 'ng-' , 'ng_' , 'data-ng-' , 'x-ng-' , 'ng\\:' ] ; for ( var p = 0 ; p < prefixes . length ; ++ p ) { var attr = prefixes [ p ] + 'repeat' ; var repeatElems = using . querySelectorAll ( '[' + attr + ']' ) ; attr = attr . replace ( / \\ / g , '' ) ; for ( var i = 0 ; i < repeatElems . length ; ++ i ) { if ( repeaterMatch ( repeatElems [ i ] . getAttribute ( attr ) , repeater , exact ) ) { rows . push ( repeatElems [ i ] ) ; } } } for ( var p = 0 ; p < prefixes . length ; ++ p ) { var attr = prefixes [ p ] + 'repeat-start' ; var repeatElems = using . querySelectorAll ( '[' + attr + ']' ) ; attr = attr . replace ( / \\ / g , '' ) ; for ( var i = 0 ; i < repeatElems . length ; ++ i ) { if ( repeaterMatch ( repeatElems [ i ] . getAttribute ( attr ) , repeater , exact ) ) { var elem = repeatElems [ i ] ; while ( elem . nodeType != 8 || ! repeaterMatch ( elem . nodeValue , repeater ) ) { if ( elem . nodeType == 1 ) { rows . push ( elem ) ; } elem = elem . nextSibling ; } } } } return rows ; }
Find all rows of an ng-repeat.

@param {string} repeater The text of the repeater, e.g. 'cat in cats'.
@param {boolean} exact Whether the repeater needs to be matched exactly
@param {Element} using The scope of the search.

@return {Array.<Element>} All rows of the repeater.
Find all rows of an ng - repeat .