你可以使用controller作为语法和指令/ ng-transclude吗?

时间:2015-11-28 23:39:50

标签: javascript angularjs angularjs-directive angularjs-ng-transclude

我使用controller as语法。在此范围内,我有一个指令可以转换访问此控制器的内容。该控制器似乎无法从ng-transclude中获取。

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

在转换内容中使用控制器是否有限制?

1 个答案:

答案 0 :(得分: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>'
  }
}

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

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