aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMisko Hevery2010-03-22 16:07:42 -0700
committerMisko Hevery2010-03-22 16:07:42 -0700
commit6f8276a8e3735396999bd158005ca86bb1bb0978 (patch)
tree23bc9ff28e335ef75bac8e7473861e41191625c7 /src
parentd4ba33d075fea5e86963a9ff4982e433fc8c7968 (diff)
downloadangular.js-6f8276a8e3735396999bd158005ca86bb1bb0978.tar.bz2
ng-watch directive
Diffstat (limited to 'src')
-rw-r--r--src/Scope.js4
-rw-r--r--src/directives.js22
2 files changed, 15 insertions, 11 deletions
diff --git a/src/Scope.js b/src/Scope.js
index d22604fd..7b1d2673 100644
--- a/src/Scope.js
+++ b/src/Scope.js
@@ -207,6 +207,10 @@ Scope.prototype = {
},
addWatchListener: function(watchExpression, listener) {
+ // TODO: clean me up!
+ if (!isFunction(listener)) {
+ listener = bind(this, this.compile(listener), {scope: this, self: this.state});
+ }
var watcher = this.watchListeners[watchExpression];
if (!watcher) {
watcher = {listeners:[], expression:watchExpression};
diff --git a/src/directives.js b/src/directives.js
index 861805fe..e081d179 100644
--- a/src/directives.js
+++ b/src/directives.js
@@ -82,6 +82,17 @@ angularDirective("ng-repeat", function(expression, element){
};
}, {exclusive: true});
+angularDirective("ng-watch", function(expression, element){
+ var match = expression.match(/^([^.]*):(.*)$/);
+ if (!match) {
+ throw "Expecting watch expression 'ident_to_watch: watch_statement' got '"
+ + expression + "'";
+ }
+ return function(){
+ this.$watch(match[1], match[2]);
+ };
+});
+
/////////////////////////////////////////
/////////////////////////////////////////
@@ -109,17 +120,6 @@ angularDirective("action", function(expression, element){
};
});
-//ng-watch
-// <div ng-watch="$anchor.book: book=Book.get();"/>
-angularDirective("watch", function(expression, element){
- var watches = {
- 'lhs':'rhs'
- }; // parse
- return function(){
- this.$watch(watches);
- };
-});
-
//widget related
//ng-validate, ng-required, ng-formatter
//ng-error