diff options
Diffstat (limited to 'src/Angular.js')
| -rw-r--r-- | src/Angular.js | 88 |
1 files changed, 13 insertions, 75 deletions
diff --git a/src/Angular.js b/src/Angular.js index d97c2282..86fb5291 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -1,50 +1,3 @@ - -////////////////////////////// -//UrlWatcher -////////////////////////////// - -function UrlWatcher(location) { - this.location = location; - this.delay = 25; - this.setTimeout = function(fn, delay) { - window.setTimeout(fn, delay); - }; - this.expectedUrl = location.href; - this.listeners = []; -} - -UrlWatcher.prototype = { - watch: function(fn){ - this.listeners.push(fn); - }, - - start: function() { - var self = this; - (function pull () { - if (self.expectedUrl !== self.location.href) { - foreach(self.listeners, function(listener){ - listener(self.location.href); - }); - self.expectedUrl = self.location.href; - } - self.setTimeout(pull, self.delay); - })(); - }, - - set: function(url) { - var existingURL = this.location.href; - if (!existingURL.match(/#/)) - existingURL += '#'; - if (existingURL != url) - this.location.href = url; - this.existingURL = url; - }, - - get: function() { - return this.location.href; - } -}; - //////////////////////////////////// if (typeof document.getAttribute == 'undefined') @@ -53,9 +6,9 @@ if (typeof document.getAttribute == 'undefined') if (!window['console']) window['console']={'log':noop, 'error':noop}; var consoleNode, - PRIORITY_FIRST = -99999; - PRIORITY_WATCH = -1000; - PRIORITY_LAST = 99999; + PRIORITY_FIRST = -99999, + PRIORITY_WATCH = -1000, + PRIORITY_LAST = 99999, NOOP = 'noop', NG_ERROR = 'ng-error', NG_EXCEPTION = 'ng-exception', @@ -74,16 +27,14 @@ var consoleNode, angularFilter = extensionMap(angular, 'filter'), angularFormatter = extensionMap(angular, 'formatter'), angularService = extensionMap(angular, 'service'), - angularCallbacks = extensionMap(angular, 'callbacks'), - urlWatcher = new UrlWatcher(window.location); + angularCallbacks = extensionMap(angular, 'callbacks'); function angularAlert(){ log(arguments); window.alert.apply(window, arguments); -}; +} extend(angular, { 'compile': compile, - 'startUrlWatch': bind(urlWatcher, urlWatcher.start), 'copy': copy, 'extend': extend, 'foreach': foreach, @@ -166,7 +117,7 @@ function isFunction(value){ return typeof value == 'function';} function isTextNode(node) { return nodeName(node) == '#text'; } function lowercase(value){ return isString(value) ? value.toLowerCase() : value; } function uppercase(value){ return isString(value) ? value.toUpperCase() : value; } -function trim(value) { return isString(value) ? value.replace(/^\s*/, '').replace(/\s*$/, '') : value; }; +function trim(value) { return isString(value) ? value.replace(/^\s*/, '').replace(/\s*$/, '') : value; } function nodeName(element) { return (element[0] || element || {}).nodeName; } function map(obj, iterator, context) { var results = []; @@ -174,7 +125,7 @@ function map(obj, iterator, context) { results.push(iterator.call(context, value, index, list)); }); return results; -}; +} function size(obj) { var size = 0; if (obj) { @@ -289,7 +240,7 @@ function copy(source, destination){ }); return destination; } -}; +} function setHtml(node, html) { if (isLeafNode(node)) { @@ -367,22 +318,10 @@ function merge(src, dst) { } } -function compile(element, config) { +function compile(element, parentScope, overrides) { var compiler = new Compiler(angularTextMarkup, angularAttrMarkup, angularDirective, angularWidget); - $element = jqLite(element), - rootScope = createScope({ - $element: $element, - $config: extend({ - 'onUpdateView': noop, - 'server': "", - 'location': { - 'get':bind(urlWatcher, urlWatcher.get), - 'set':bind(urlWatcher, urlWatcher.set), - 'watch':bind(urlWatcher, urlWatcher.watch) - } - }, config || {}) - }, serviceAdapter(angularService)); - return compiler.compile($element)($element, rootScope); + $element = jqLite(element); + return compiler.compile($element)($element, parentScope, overrides); } ///////////////////////////////////////////////// @@ -404,11 +343,10 @@ function toKeyValue(obj) { parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); }); return parts.length ? parts.join('&') : ''; -}; +} function angularInit(config){ if (config.autobind) { - compile(window.document, config).$init(); + compile(window.document, null, {'$config':config}).$init(); } } - |
