dart - AngularDart: How to force page re-rendering similar to $digest in AngularJS? -


i have page simple component:

<!doctype html> <html ng-app> <head>     <title>test</title> </head> <body index-page>  <div>     <h1>status</h1>     <h2>{{ 1 | enum }}</h2> </div>  <script type="text/javascript" src="packages/web_components/platform.js"></script> <script type="text/javascript" src="packages/web_components/dart_support.js"></script> <script type="application/dart" src="index.dart"></script> <script type="text/javascript" src="packages/browser/dart.js"></script> </body> </html> 

the filter 'enum' use loads data using xhr. therefore, @ page load time data available (say, takes second). so, while data not there filter returns null. how can trigger controller re-evaluate template when data received , filter able return meaningful values?

in example below use timer simulate xhr:

import 'dart:html'; import 'dart:convert'; import 'dart:async'; import 'package:angular/application_factory.dart'; import 'package:angular/angular.dart';   @controller(selector: '[index-page]', publishas: 'ctrl') class indexpagecontroller {  }  const delay = true;  @formatter(name: 'enum') class enumnameformatter {     map names = new map();      enumnameformatter() {         if (delay) {             new timer(new duration(milliseconds:2000), fillnames);         } else {             fillnames();         }     }      void fillnames() {         names[1] = "one";         names[2] = "two";         names[3] = "three";     }      string call(enumvalue) {         var enumname = names[enumvalue];         if (enumname != null) {             return enumname;         }     } }  class myappmodule extends module {     myappmodule() {         // needed https://github.com/angular/angular.dart/issues/1272         // fixed in 14.0         binding.printinjectwarning = false;          // main controller         bind(indexpagecontroller);          // formatter         bind(enumnameformatter);      } }  void main() {     applicationfactory().addmodule(new myappmodule()).run(); } 

in example below, if set delay = true - "one" not displayed on page. if set delay=false - works (as should). how can force page refresh/re-rendering when xhr (timer) completed?

in angulardart, no longer need use $apply or $digest re-render page. use dart zones dirty-check model automatically after operation.

what seeing, different bug/feature -- @formatters idempotent. is, assume if have formatted value once, formatting again produce same result.

since expression being formatted: 1 has not changed, don't re-run formatter because assumed give same value.

an easy work-around use function instead of formatter.


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -