Q: Having two ng-model directives causes: 5 $digest() iterations reached. Aborting Here's a really stripped down version of what seems to be causing Angular-Dart to abort out of an infinite loop. I looked at each of the other related questions on stackoverflow, but I wasn't able to make any progress. This seems like a particularly trivial implementation that should work... what am I miss understanding?
I have two components (a comp_a and a comp_b):
A:
library comp_a;

import 'package:angular/angular.dart';

@NgComponent(
    selector: 'comp-a',
    template: '<div id="compa"></div>',
    publishAs: 'cmp'
)
class CompA {
  NgModel _ngModel;

  CompA(this._ngModel);
}

B:
library comp_b;

import 'package:angular/angular.dart';

@NgComponent(
    selector: 'comp-b',
    template: '<div id="compb"></div>',
    publishAs: 'cmp'
)
class CompB {
  NgModel _ngModel;

  CompB(this._ngModel);
}

My main() dart file is equally boring:
library main;

import 'package:angular/angular.dart';
import 'package:loop/component/comp_a.dart';
import 'package:loop/component/comp_b.dart';

class CompModule extends Module {

  CompModule() {
    type(CompA);
    type(CompB);
  }
}

void main() {
  ngBootstrap(module: new CompModule());
}

As is my html file:
<!DOCTYPE html>

<html ng-app>
  <body>

      <comp-a ng-model="[1]"></comp-a>
      <comp-b ng-model="[2]"></comp-b>

    <script type="application/dart" src="loop.dart"></script>
    <script src="packages/browser/dart.js"></script>
  </body>
</html>

If I have both <comp-a>... and <comp-b>... without ng-model things work great (i.e., no errors in the console). If I have either <comp-a>... or <comp-b>... with ng-model, things work fine... it's only when both of them have ng-model that I get this:
5 $digest() iterations reached. Aborting!
Watchers fired in the last 3 iterations: [["ng-model=[1]","ng-model=[2]"],["ng-model=[1]","ng-model=[2]"],["ng-model=[1]","ng-model=[2]"]]

STACKTRACE:
#0      Scope._digestWhileDirtyLoop (package:angular/core/scope.dart:526:5)
#1      Scope.$digest (package:angular/core/scope.dart:475:28)
#2      _autoDigestOnTurnDone (package:angular/core/scope.dart:153:14)
#3      _rootRun (dart:async/zone.dart:688)
#4      _ZoneDelegate.run (dart:async/zone.dart:417)
#5      NgZone._finishTurn (package:angular/core/zone.dart:91:21)
#6      NgZone._onRunBase (package:angular/core/zone.dart:56:43)
#7      _onRun (package:angular/core/zone.dart:61:15)
#8      _ZoneDelegate.run (dart:async/zone.dart:417)
#9      _CustomizedZone.run (dart:async/zone.dart:627)
#10     NgZone.run (package:angular/core/zone.dart:143:27)
#11     ngBootstrap (package:angular/bootstrap.dart:87:18)
#12     main (http://127.0.0.1:3030/loop/web/loop.dart:16:14)

Thanks!

A: A wild guess
[1] [2] map to the same Scope attribute (might be a bug) and repeatedly update each others value. (1, 2, 1, 2, 1, 2, ...)
I would try to enclose each element with a div tag and add some dummy controller to them to isolate the scopes.
I don't have deep knowledge here. There are probably much better solutions.

A: Miško Hevery answered the question here:
https://groups.google.com/d/msg/angular-dart/MYhHBphdY8Q/0ZU8nXQu9ZEJ

Your scope understanding is correct. But due to the way watchers work (soon to be fixed) the system creates a new array for each digest. That is why it never stabilizes. you should bind to a field. ng-model="someCtroller.someField" rather than ng-mode="[1]".
  -- misko

I wrapped my two components in a div with the controller's directive and changed the ng-models from the static arrays to bind to their corresponding controller fields, and everything worked fine.
E.g.,
@NgController(
  selector: '[test-controller]',
  publishAs: 'ctrl'
)
class TestController {

  List a;
  List b;

}

And, 
<div test-controller>
    <comp-a ng-model="ctrl.a"></comp-a>
    <comp-b ng-model="ctrl.b"></comp-b>
</div>

That fixed the problem. The static arrays were just for testing purposes, so I didn't lose anything by introducing the controller.
