1

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

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

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

4

1 回答 1

0

我认为您使用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 中删除 。如果你这样做,它会按预期工作

这可能不是你想要的。以您的方式进行操作,您可以将不同的控制器与指令一起使用,并以控制器与指令耦合的方式进行操作...

于 2015-11-29T00:09:34.960 回答