我怀疑这是一个错误,甚至可能是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>
这是Dart代码:
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'。
这是一个错误,还是我误解了范围是如何工作的?
答案 0 :(得分:2)
重复: https://github.com/angular/angular.dart/issues/396 Puzzled by CSS selector to trigger controller
答案 1 :(得分:2)
你应该使用@NgController而不是@NgDirective