aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng
diff options
context:
space:
mode:
authorThibault Leruitte2013-02-26 11:14:27 +0100
committerIgor Minar2013-02-28 17:27:27 -0800
commitfe8d893b839e9b14e3e55a3a0523cc1e6355bdd5 (patch)
treeea3442e28bf4fdfd476c150255257d5a9641a011 /test/ng
parenteb53423a41136fcda0c5e711f2d104952080354b (diff)
downloadangular.js-fe8d893b839e9b14e3e55a3a0523cc1e6355bdd5.tar.bz2
feat($compile): allow directives to modify interpolated attributes
A directive can now set/update/remove attribute values even those containing interpolation during the compile phase and have the new value be picked up during the compilation. For example in template: <div replace-directive some-attr-or-directive="{{originalInterpolationValue}}"></div> the replace-directive can now replace the value of some-attr-or-directive during compilation which produces this intermitent template: <div replace-directive some-attr-or-directive="{{replacedInterpolationValue}}"></div> or even <div replace-directive some-attr-or-directive="replacedStaticValue"></div> as well as <div replace-directive some-attr-or-directive></div>
Diffstat (limited to 'test/ng')
-rw-r--r--test/ng/compileSpec.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js
index f81199cb..9614030c 100644
--- a/test/ng/compileSpec.js
+++ b/test/ng/compileSpec.js
@@ -1503,6 +1503,12 @@ describe('$compile', function() {
expect(attr.$observe('someAttr', observeSpy)).toBe(observeSpy);
};
});
+ directive('replaceSomeAttr', valueFn({
+ compile: function(element, attr) {
+ attr.$set('someAttr', 'bar-{{1+1}}');
+ expect(element).toBe(attr.$$element);
+ }
+ }));
}));
@@ -1544,6 +1550,14 @@ describe('$compile', function() {
}));
+ it('should allow directive to replace interpolated attributes before attr interpolation compilation', inject(
+ function($compile, $rootScope) {
+ element = $compile('<div some-attr="foo-{{1+1}}" replace-some-attr></div>')($rootScope);
+ $rootScope.$digest();
+ expect(element.attr('some-attr')).toEqual('bar-2');
+ }));
+
+
it('should call observer of non-interpolated attr through $evalAsync',
inject(function($rootScope, $compile) {
$compile('<div some-attr="nonBound" observer></div>')($rootScope);