Angular:从transcluded组件中调用transclude指令函数

时间:2016-05-29 07:43:07

标签: javascript angularjs

我想创建一个具有转换部分的组件,这是一个例子:
http://jsfiddle.net/vp2dnj65/1/

正如您在单击“执行”按钮时所看到的,没有任何反应 有没有办法从放置在被转换部分中的组件运行转换控制器功能。

这是HTML:

<panel> // trans is the name of the controller of panel
   <button ng-click="trans.do()">do</button> //transcluded part
</panel>

2 个答案:

答案 0 :(得分:0)

使用transclude时,内部组件连接到上级父级(不是转义父级)。在您的情况下,我建议使用将由$rootScope控制器注册并由转换组件触发的事件(trans或服务)。

答案 1 :(得分:0)

如果您手动转换元素并将范围函数附加到它,则可以实现此目的:

compile: function(tElement, tAttrs) {
  var parentElement = tElement.parent();
  return function(scope, element, attrs, ctrl, transclude) {
    transclude(scope.$new(), function(clone) {
      clone.bind('click', function() {
        scope.trans.do();
      })
      parentElement.append(clone);
    });
  };
}

如此tutorial所示。 另见fiddle