您可以将控制器用作 directive/ng-transclude 的语法吗?

Can you use controller as syntax with directive/ng-transclude?

我正在使用 controller as 语法。在此范围内,我有一个指令包含访问此控制器的内容。该控制器似乎无法从 ng-transclude 中访问。

演示:http://plnkr.co/edit/ZYPCym2WQV43wh4R4nwI?p=preview

在嵌入的内容中使用控制器是否有限制?

我认为您使用 ng-controller 和指令的方式混淆了 b/c。不幸的是,我无法解释原因,但我觉得你设置控制器的方式很有趣 :)

我的想法是,如果你将 ng-controller 放在一个指令元素上,你不妨将它设为 "directive 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>'
  }
}

务必从 HTML 中删除 ng-controller="DemoCtrl as DemoCtrlVM"。如果你这样做,它 works as expected.

这可能不是您想要的。按照你的方式,你可以使用不同的控制器和指令,并按照我的方式将控制器耦合到指令......