diff options
Diffstat (limited to 'src/directives.js')
| -rw-r--r-- | src/directives.js | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/directives.js b/src/directives.js index 10476c77..c54c89e9 100644 --- a/src/directives.js +++ b/src/directives.js @@ -11,9 +11,15 @@ angularDirective("ng-eval", function(expression){ }); angularDirective("ng-bind", function(expression){ + var templateFn = compileBindTemplate("{{" + expression + "}}"); return function(element) { - this.$watch(expression, function(value){ - element.text(value); + var lastValue; + this.$onEval(function() { + var value = templateFn.call(this); + if (value != lastValue) { + element.text(value); + lastValue = value; + } }, element); }; }); @@ -34,7 +40,9 @@ function compileBindTemplate(template){ bindTemplateCache[template] = fn = function(){ var parts = [], self = this; foreach(bindings, function(fn){ - parts.push(fn.call(self)); + var value = fn.call(self); + if (isObject(value)) value = toJson(value, true); + parts.push(value); }); return parts.join(''); }; @@ -125,6 +133,7 @@ angularDirective("ng-action", function(expression, element){ var self = this; element.click(function(){ self.$tryEval(expression, element); + self.$eval(); }); }; }); |
