diff options
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 |
