OLD | NEW |
1 part of angular.directive; | 1 part of angular.directive; |
2 | 2 |
3 /** | 3 /** |
4 * The `ngStyle` directive allows you to set CSS style on an HTML element | 4 * The `ngStyle` directive allows you to set CSS style on an HTML element |
5 * conditionally. | 5 * conditionally. |
6 * | 6 * |
7 * @example | 7 * @example |
8 * <span ng-style="{color:'red'}">Sample Text</span> | 8 * <span ng-style="{color:'red'}">Sample Text</span> |
9 */ | 9 */ |
10 @NgDirective( | 10 @Decorator( |
11 selector: '[ng-style]', | 11 selector: '[ng-style]', |
12 map: const { 'ng-style': '@styleExpression'}) | 12 map: const {'ng-style': '@styleExpression'}) |
13 class NgStyleDirective { | 13 class NgStyle { |
14 final dom.Element _element; | 14 final dom.Element _element; |
15 final Scope _scope; | 15 final Scope _scope; |
16 final AstParser _parser; | |
17 | 16 |
18 String _styleExpression; | 17 String _styleExpression; |
19 Watch _watch; | 18 Watch _watch; |
20 | 19 |
21 NgStyleDirective(this._element, this._scope, this._parser); | 20 NgStyle(this._element, this._scope); |
22 | 21 |
23 /** | 22 /** |
24 * ng-style attribute takes an expression which evaluates to an | 23 * ng-style attribute takes an expression which evaluates to an |
25 * object whose keys are CSS style names and values are corresponding values | 24 * object whose keys are CSS style names and values are corresponding values |
26 * for those CSS keys. | 25 * for those CSS keys. |
27 */ | 26 */ |
28 set styleExpression(String value) { | 27 set styleExpression(String value) { |
29 _styleExpression = value; | 28 _styleExpression = value; |
30 if (_watch != null) _watch.remove(); | 29 if (_watch != null) _watch.remove(); |
31 _watch = _scope.watch(_parser(_styleExpression, collection: true), _onStyleC
hange); | 30 _watch = _scope.watch(_styleExpression, _onStyleChange, collection: true, |
| 31 canChangeModel: false); |
32 } | 32 } |
33 | 33 |
34 _onStyleChange(MapChangeRecord mapChangeRecord, _) { | 34 _onStyleChange(MapChangeRecord mapChangeRecord, _) { |
35 if (mapChangeRecord != null) { | 35 if (mapChangeRecord != null) { |
36 dom.CssStyleDeclaration css = _element.style; | 36 dom.CssStyleDeclaration css = _element.style; |
37 fn(MapKeyValue kv) => css.setProperty(kv.key, kv.currentValue == null ? ''
: kv.currentValue); | 37 fn(MapKeyValue m) => |
| 38 css.setProperty(m.key, m.currentValue == null ? '' : m.currentValue); |
38 | 39 |
39 mapChangeRecord | 40 mapChangeRecord..forEachRemoval(fn) |
40 ..forEachRemoval(fn) | 41 ..forEachChange(fn) |
41 ..forEachChange(fn) | 42 ..forEachAddition(fn); |
42 ..forEachAddition(fn); | |
43 } | 43 } |
44 } | 44 } |
45 } | 45 } |
OLD | NEW |