aboutsummaryrefslogtreecommitdiffstats
path: root/src/Angular.js
diff options
context:
space:
mode:
authorMisko Hevery2010-03-31 17:56:16 -0700
committerMisko Hevery2010-03-31 17:56:16 -0700
commit861bac1d2808b15abb867e761ded8144bf5f7e94 (patch)
treec7acd3aba0caeddf14a77c538487cf2baff9d96a /src/Angular.js
parent35a91085004e31f786df1e0011bc26ed0142ab4d (diff)
downloadangular.js-861bac1d2808b15abb867e761ded8144bf5f7e94.tar.bz2
started to add services
Diffstat (limited to 'src/Angular.js')
-rw-r--r--src/Angular.js71
1 files changed, 53 insertions, 18 deletions
diff --git a/src/Angular.js b/src/Angular.js
index db177082..8eef6ac0 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -4,6 +4,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;
NOOP = 'noop',
NG_ERROR = 'ng-error',
NG_EXCEPTION = 'ng-exception',
@@ -21,11 +24,30 @@ var consoleNode,
angularValidator = extensionMap(angular, 'validator'),
angularFilter = extensionMap(angular, 'filter'),
angularFormatter = extensionMap(angular, 'formatter'),
+ angularService = extensionMap(angular, 'service'),
angularCallbacks = extensionMap(angular, 'callbacks'),
- angularAlert = angular['alert'] || (angular['alert'] = function(){
- log(arguments); window.alert.apply(window, arguments);
- });
-angular['copy'] = copy;
+ urlWatcher = new UrlWatcher(window.location);
+
+function angularAlert(){
+ log(arguments); window.alert.apply(window, arguments);
+};
+
+extend(angular, {
+ 'compile': compile,
+ 'startUrlWatch': bind(urlWatcher, urlWatcher.start),
+ 'copy': copy,
+ 'extend': extend,
+ 'foreach': foreach,
+ 'noop':noop,
+ 'identity':identity,
+ 'isUndefined': isUndefined,
+ 'isDefined': isDefined,
+ 'isString': isString,
+ 'isFunction': isFunction,
+ 'isNumber': isNumber,
+ 'isArray': isArray,
+ 'alert': angularAlert
+});
function foreach(obj, iterator, context) {
var key;
@@ -43,6 +65,17 @@ function foreach(obj, iterator, context) {
return obj;
}
+function foreachSorted(obj, iterator, context) {
+ var keys = [];
+ for (var key in obj) keys.push(key);
+ keys.sort();
+ for ( var i = 0; i < keys.length; i++) {
+ iterator.call(context, obj[keys[i]], keys[i]);
+ }
+ return keys;
+}
+
+
function extend(dst) {
foreach(arguments, function(obj){
if (obj !== dst) {
@@ -285,19 +318,21 @@ function merge(src, dst) {
}
}
-/////////////////////////////////////////////////
-
-angular['compile'] = function(element, config) {
- config = extend({
- 'onUpdateView': noop,
- 'server': "",
- 'location': {'get':noop, 'set':noop, 'listen':noop}
- }, config||{});
-
+function compile(element, config) {
var compiler = new Compiler(angularTextMarkup, angularAttrMarkup, angularDirective, angularWidget);
$element = jqLite(element),
- rootScope = {
- '$window': window
- };
- return rootScope['$root'] = compiler.compile($element)($element, rootScope);
-};
+ 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);
+}
+/////////////////////////////////////////////////