我想创建一个具有转换部分的组件,这是一个例子:
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>
答案 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);
});
};
}