diff options
| author | Misko Hevery | 2011-04-12 13:40:23 -0700 | 
|---|---|---|
| committer | Misko Hevery | 2011-06-08 15:01:32 -0700 | 
| commit | 2a12f7dcaa078e1d6c3b5092e62dd5f404b8c3e4 (patch) | |
| tree | bc0b46a0f3949f444b55dae92ee44ed0f6d88aa4 /src | |
| parent | 20ce797906bf20cfb1682a6bd1bb23c02aedc369 (diff) | |
| download | angular.js-2a12f7dcaa078e1d6c3b5092e62dd5f404b8c3e4.tar.bz2 | |
Added nextUid() function for unified way of generating IDs in angular
Diffstat (limited to 'src')
| -rw-r--r-- | src/Angular.js | 31 | 
1 files changed, 31 insertions, 0 deletions
| diff --git a/src/Angular.js b/src/Angular.js index 7249fb69..26026cf3 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -114,6 +114,7 @@ var $$element         = '$element',      angularCallbacks  = extensionMap(angular, 'callbacks'),      nodeName_,      rngScript         = /^(|.*\/)angular(-.*?)?(\.min)?.js(\?[^#]*)?(#(.*))?$/, +    uid               = ['0', '0', '0'];      DATE_ISOSTRING_LN = 24;  /** @@ -189,6 +190,36 @@ function formatError(arg) {    return arg;  } +/** + * @description + * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric + * characters such as '012ABC'. The reason why we are not using simply a number counter is that + * the number string gets longer over time, and it can also overflow, where as the the nextId + * will grow much slower, it is a string, and it will never overflow. + * + * @returns an unique alpha-numeric string + */ +function nextUid() { +  var index = uid.length; +  var digit; + +  while(index) { +    index--; +    digit = uid[index].charCodeAt(0); +    if (digit == 57 /*'9'*/) { +      uid[index] = 'A'; +      return uid.join(''); +    } +    if (digit == 90  /*'Z'*/) { +      uid[index] = '0'; +    } else { +      uid[index] = String.fromCharCode(digit + 1); +      return uid.join(''); +    } +  } +  uid.unshift('0'); +  return uid.join(''); +}  /**   * @workInProgress | 
