publishAs值必须在Angular Dart中是唯一的吗?

时间:2014-01-09 00:21:39

标签: angularjs dart angular-dart

我怀疑这是一个错误,甚至可能是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'。

这是一个错误,还是我误解了范围是如何工作的?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

你应该使用@NgController而不是@NgDirective