我怀疑这是一个错误,甚至可能是https://github.com/angular/angular.dart/issues/396的表现。
我想注册多个控制器并想ctrl
用作publishAt
. @NgDirective
这导致第二次ctrl
破坏第一次的价值,即使它们存在于不同的范围内。
这是视图:
<!DOCTYPE html>
<html>
<body>
<div>
<div foo-controller>
<!-- PRINTS 'bar'. -->
<p>{{ctrl.item}}</p>
</div>
<div bar-controller>
<!-- PRINTS 'bar'. -->
<p>{{ctrl.item}}</p>
</div>
</div>
<script type="application/dart" src="main.dart"></script>
<script type="text/javascript" src="packages/browser/dart.js"></script>
</body>
</html>
这是飞镖代码:
import 'package:angular/angular.dart';
@NgDirective(
selector: '[foo-controller]',
publishAs: 'ctrl'
)
class FooController {
String item = 'foo';
}
@NgDirective(
selector: '[bar-controller]',
publishAs: 'ctrl'
)
class BarController {
String item = 'bar';
}
main() {
ngBootstrap(module: new Module()
..type(FooController)
..type(BarController));
}
两次输出都是“bar”。如果我使publishAs
值唯一,则输出为“foo”后跟“bar”。
这是一个错误还是我误解了作用域的工作原理?