angular_node_bind.dart icon indicating copy to clipboard operation
angular_node_bind.dart copied to clipboard

Expressions used in [[ ]] are being tree shaken by dart2js

Open adarshaj opened this issue 9 years ago • 8 comments

Currently the binding works only in Dartium, and because of tree shaking the expression used only within [[ ]] in html fails to be preserved in generated js after pub build.

adarshaj avatar Jul 20 '14 13:07 adarshaj

Thanks for the report!

sethladd avatar Jul 20 '14 19:07 sethladd

@blois How hard would it be to add [[ ]] expressions to the Angular transformer?

justinfagnani avatar Aug 28 '14 01:08 justinfagnani

I read some issue comments/commit messages during the recent weeks that indicate the Angular team is working on direct support of binding to polymer elements but I could have misinterpreted these comments.

zoechi avatar Aug 28 '14 08:08 zoechi

Adding support for expressions in Angular should be as easy as adding them to: https://github.com/angular/angular.dart/blob/master/lib/tools/html_extractor.dart

Should be able to add tests for it at: https://github.com/angular/angular.dart/blob/master/test/tools/transformer/expression_generator_spec.dart

blois avatar Aug 28 '14 16:08 blois

Is there a way to plug into the the extractor? This same work got rejected from Angular core, so I would expect changes to the extractor to be too. The point of this separate package it to be independent of Angular core.

justinfagnani avatar Aug 28 '14 19:08 justinfagnani

@zoechi Angular's web component support design will not currently work with many of the custom elements in core-* and paper-* because they don't fire 'change' events when properties change. I think this is a major flaw in Angular's web component support, and angular_node_bind sidesteps all those issues by calling Node.bind() directly.

justinfagnani avatar Aug 28 '14 19:08 justinfagnani

@justinfagnani Thanks for the feedback!

zoechi avatar Aug 29 '14 07:08 zoechi

Ouch, Angualr's expression extraction support is very limited, making this issue impossible to fix right now. Basically Angular's extractor supports {{ }} expressions, or directives can declare in their annotation which expressions they use, or which attributes contain expressions. Since we don't know ahead of time which expressions are used, or which attributes they're used in, we can't possibly specify that. Not only that but the attribute containing expressions are only support if the entire attribute is an expression.

This is tracked in angular.dart issue 1050: https://github.com/angular/angular.dart/issues/1050

justinfagnani avatar Aug 30 '14 03:08 justinfagnani