aboutsummaryrefslogtreecommitdiffstats
path: root/src/directives.js
diff options
context:
space:
mode:
authorMisko Hevery2010-04-12 14:28:15 -0700
committerMisko Hevery2010-04-12 14:28:15 -0700
commit2637d4e90c8a43436d21a4b9e790b00ae461c438 (patch)
treea952ccff0f34595a6624a01e840df823665c09a9 /src/directives.js
parent843bd355d25ebf2369aec79f98cb6704d38497e9 (diff)
downloadangular.js-2637d4e90c8a43436d21a4b9e790b00ae461c438.tar.bz2
removed Meta and allowed binding of HTML
Diffstat (limited to 'src/directives.js')
-rw-r--r--src/directives.js24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/directives.js b/src/directives.js
index 22ff7544..2ead4979 100644
--- a/src/directives.js
+++ b/src/directives.js
@@ -23,14 +23,23 @@ angularDirective("ng-eval", function(expression){
});
angularDirective("ng-bind", function(expression){
- var templateFn = compileBindTemplate("{{" + expression + "}}");
return function(element) {
- var lastValue;
+ var lastValue, lastError;
this.$onEval(function() {
- var value = templateFn.call(this, element);
- if (value != lastValue) {
- element.text(value);
+ var error, value = this.$tryEval(expression, function(e){
+ error = toJson(e);
+ });
+ if (value != lastValue || error != lastError) {
lastValue = value;
+ lastError = error;
+ elementError(element, NG_EXCEPTION, error);
+ if (error) value = error;
+ if (isElement(value)) {
+ element.html('');
+ element.append(value);
+ } else {
+ element.text(value);
+ }
}
}, element);
};
@@ -57,7 +66,10 @@ function compileBindTemplate(template){
var parts = [], self = this;
foreach(bindings, function(fn){
var value = fn.call(self, element);
- if (isObject(value)) value = toJson(value, true);
+ if (isElement(value))
+ value = '';
+ else if (isObject(value))
+ value = toJson(value, true);
parts.push(value);
});
return parts.join('');