Вот действительно урезанная версия того, что, кажется, заставляет Angular-Dart прервать бесконечный цикл. Я просмотрел каждый из других связанных вопросов в stackoverflow, но не смог добиться никакого прогресса. Это кажется особенно тривиальной реализацией, которая должна работать... что я не понимаю?
У меня есть два компонента (comp_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);
}
Мой файл с дротиками main()
такой же скучный:
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());
}
Как и мой html-файл:
<!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>
Если у меня есть и <comp-a>...
, и <comp-b>...
без ng-model
, все работает отлично (т.е. в консоли нет ошибок). Если у меня есть <comp-a>...
или <comp-b>...
с ng-model
, все работает нормально... только когда у них обоих есть ng-model
, я получаю следующее:
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)
Спасибо!