proper handlig of $element in filters

This commit is contained in:
Misko Hevery 2010-07-15 13:35:00 -07:00
parent 9abd10e7b8
commit 1de82283db
2 changed files with 9 additions and 6 deletions

View file

@ -76,8 +76,8 @@ function compileBindTemplate(template){
}); });
bindTemplateCache[template] = fn = function(element){ bindTemplateCache[template] = fn = function(element){
var parts = [], self = this, var parts = [], self = this,
oldElement = this.hasOwnProperty('$element') ? this.$element : undefined; oldElement = this.hasOwnProperty('$element') ? self.$element : undefined;
this.$element = element; self.$element = element;
for ( var i = 0; i < bindings.length; i++) { for ( var i = 0; i < bindings.length; i++) {
var value = bindings[i].call(self, element); var value = bindings[i].call(self, element);
if (isElement(value)) if (isElement(value))
@ -86,7 +86,7 @@ function compileBindTemplate(template){
value = toJson(value, true); value = toJson(value, true);
parts.push(value); parts.push(value);
}; };
this.$element = oldElement; self.$element = oldElement;
return parts.join(''); return parts.join('');
}; };
} }

View file

@ -73,11 +73,14 @@ describe("directives", function(){
}); });
it('should have $element set to current bind element', function(){ it('should have $element set to current bind element', function(){
angularFilter.myFilter = function(){ var innerText;
this.$element.text('HELLO'); angularFilter.myFilter = function(text){
innerText = this.$element.text();
return text;
}; };
var scope = compile('<div>before<div ng:bind-template="{{0|myFilter}}"></div>after</div>'); var scope = compile('<div>before<div ng:bind-template="{{\'HELLO\'|myFilter}}">INNER</div>after</div>');
expect(scope.$element.text()).toEqual("beforeHELLOafter"); expect(scope.$element.text()).toEqual("beforeHELLOafter");
expect(innerText).toEqual('INNER');
}); });
}); });