我正在使用controller as
语法。在这个范围内,我有一个指令,它包含访问这个控制器的内容。该控制器似乎无法从 ng-transclude 中访问。
演示:http ://plnkr.co/edit/ZYPCym2WQV43wh4R4nwI?p=preview
在嵌入的内容中使用控制器是否有限制?
我正在使用controller as
语法。在这个范围内,我有一个指令,它包含访问这个控制器的内容。该控制器似乎无法从 ng-transclude 中访问。
演示:http ://plnkr.co/edit/ZYPCym2WQV43wh4R4nwI?p=preview
在嵌入的内容中使用控制器是否有限制?
我认为您使用ng-controller
指令的方式与 b/c 混淆了。不幸的是,我无法解释原因,但你设置控制器的方式对我来说似乎很有趣:)
我的想法是,如果您要放置ng-controller
一个指令元素,您不妨将其设为“指令控制器”,如下所示:
function transcludeDirective() {
return {
restrict: 'E',
transclude:true,
scope: false,
controller: DemoCtrl,
controllerAs: 'DemoCtrlVM',
template: '<div>'+
'<p>First name: <b>{{ DemoCtrlVM.first_name }}</b></p>'+
'<ng-transclude></ng-transclude>'+
'</div>'
}
}
请务必ng-controller="DemoCtrl as DemoCtrlVM"
从 HTML 中删除 。如果你这样做,它会按预期工作。
这可能不是你想要的。以您的方式进行操作,您可以将不同的控制器与指令一起使用,并以控制器与指令耦合的方式进行操作...