【发布时间】:2015-06-08 16:05:37
【问题描述】:
我正在尝试在没有 $scope 注入的指令中使用 ControllerAs,而是使用它,而当 scope:true 时我正在苦苦挣扎
当我使用隔离作用域时,一切正常,因为我可以使用 bindToController: true,但在这种情况下,我遗漏了一些东西,我不知道是什么。
我有这个代码。如您所见,我试图在我的指令中打印 foo3(来自 MyController)和 foo4(来自 MyDirectiveController)。这可以很容易地在两个控制器中使用 $scope 注入来完成,但是当我尝试使用它时,我不知道我是否可以(以及如何)在我的指令中从 MyController 访问 foo3。
angular
.module("app",[])
.controller('MyController', MyController)
.controller('MyDirectiveController', MyController)
.directive('myDirective', myDirective);
function MyController() {
var vm = this;
vm.foo3 = 'foo3';
}
function myDirective() {
return {
restrict: 'E',
scope: true,
controller: MyDirectiveController,
controllerAs: 'vm',
template: '{{vm.foo3}} - {{vm.foo4}}'
}
}
function MyDirectiveController() {
var vm = this;
vm.foo4 = 'foo4';
}
这里是jsfiddle。
【问题讨论】:
-
你说不行,什么意思?
-
如果我在模板中使用 {{vm.foo2}} 而不是 {{vm.foo}} 它不会打印任何内容。如果我使用 $scope 没问题,因为指令中的范围继承自 MyController 中的范围,但是当使用 this(在本例中为 vm)时,我不知道如何实现。
-
看看这个小提琴 - jsfiddle.net/9yhgjk4g/3,我觉得它没问题。
-
当然,因为您在这两种情况下都使用 foo。我想使用来自 MyController 的 foo,而不是来自指令控制器的 foo2。
-
啊,搞定你了..我的错!!
标签: angularjs angularjs-directive angularjs-scope