【发布时间】:2014-02-18 17:29:34
【问题描述】:
我遇到了 AngularJS 指令的一个相当不直观的方面,我很好奇这种行为是否有合理的原因。当我在指令的定义中指定控制器时:
angular.module('MyApp.directives', [])
.directive('myDirective, function () {
templateUrl: "my-template.html",
controller: "MyController"
};
指令模板的范围对于指令的所有实例都是相同的。
但是,如果我不在指令的定义中指定控制器:
angular.module('MyApp.directives', [])
.directive('myDirective, function () {
templateUrl: "my-template.html"
};
而是使用ng-controller直接在指令上定义控制器:
<my-directive ng-controller="MyController"/>
MyController 的每个实例都有自己的子作用域。
我希望这些方法能够产生相同的结果,但显然 Angular 会根据控制器的声明方式以不同的方式处理控制器的作用域。有这种差异的原因吗?
【问题讨论】:
标签: javascript angularjs controller angularjs-directive angularjs-scope