我很難理解如何使用屬性選擇器來限制控制器的範圍。下面是最小的控制器代碼:由CSS選擇器困惑觸發控制器
import 'package:angular/angular.dart';
@NgDirective(
selector: '[my-controller]',
publishAs: 'ctrl'
)
class MyController {
String foo = 'fooooooooooooo';
}
main() {
ngBootstrap(module: new Module()
..type(MyController));
}
這裏是使用該控制器的看法:
<!DOCTYPE html>
<html>
<body>
<div>
<!-- DOES NOT WORK. MAKES SENSE. -->
<p>Outside ng-app: {{ctrl.foo}}</p>
</div>
<div ng-app>
<div my-controller>
<!-- WORKS. MAKES SENSE -->
<p>Inside my-controller div: {{ctrl.foo}}</p>
</div>
<!-- WORKS. WHY? It is outside the div with the my-controller attribute -->
-->
<p>Outside my-controller div: {{ctrl.foo}}</p>
</div>
<script type="application/dart" src="main.dart"></script>
<script type="text/javascript" src="packages/browser/dart.js"></script>
</body>
</html>
可以預見,{{ctrl.foo}}
代碼不元素外與ng-app
工作。還可以預見,{{ctrl.foo}}
在<div my-controller>
內工作。但我不明白它爲什麼可以工作以外<div my-controller>
。有任何想法嗎?
是的,這確實是一個錯誤:-(https://github.com/angular/angular.dart/issues/396 –