aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Scope.js5
-rw-r--r--src/directives.js8
-rw-r--r--test/directivesSpec.js9
3 files changed, 18 insertions, 4 deletions
diff --git a/src/Scope.js b/src/Scope.js
index 9a20c214..687d3628 100644
--- a/src/Scope.js
+++ b/src/Scope.js
@@ -127,10 +127,11 @@ function createScope(parent, services, existing) {
var watch = expressionCompile(watchExp),
last;
function watcher(){
- var value = watch.call(instance);
+ var value = watch.call(instance),
+ lastValue = last;
if (last !== value) {
last = value;
- instance.$tryEval(listener, exceptionHandler, value, last);
+ instance.$tryEval(listener, exceptionHandler, value, lastValue);
}
}
instance.$onEval(PRIORITY_WATCH, watcher);
diff --git a/src/directives.js b/src/directives.js
index d9cf7962..a3575d62 100644
--- a/src/directives.js
+++ b/src/directives.js
@@ -30,8 +30,9 @@ angularDirective("ng-bind", function(expression){
value = this.$tryEval(expression, function(e){
error = toJson(e);
}),
- isHtml = value instanceof HTML;
- if (!isHtml && isObject(value)) {
+ isHtml = value instanceof HTML,
+ isDomElement = isElement(value);
+ if (!isHtml && !isDomElement && isObject(value)) {
value = toJson(value);
}
if (value != lastValue || error != lastError) {
@@ -41,6 +42,9 @@ angularDirective("ng-bind", function(expression){
if (error) value = error;
if (isHtml) {
element.html(value.html);
+ } else if (isDomElement) {
+ element.html('');
+ element.append(value);
} else {
element.text(value);
}
diff --git a/test/directivesSpec.js b/test/directivesSpec.js
index eb8a9785..42869a05 100644
--- a/test/directivesSpec.js
+++ b/test/directivesSpec.js
@@ -44,6 +44,15 @@ describe("directives", function(){
expect(lowercase(element.html())).toEqual('<div>hello</div>');
});
+ it('should ng-bind element', function() {
+ angularFilter.myElement = function() {
+ return jqLite('<a>hello</a>');
+ };
+ var scope = compile('<div ng-bind="0|myElement"></div>');
+ scope.$eval();
+ expect(lowercase(element.html())).toEqual('<a>hello</a>');
+ });
+
it('should ng-bind-template', function() {
var scope = compile('<div ng-bind-template="Hello {{name}}!"></div>');
scope.$set('name', 'Misko');