我创建了一个带有transclude功能的指令。我在模板中提供了默认内容,因此用户可以提供自定义内容或使用默认内容。在转换内容中,我需要访问指令范围的功能。我发现默认内容没有问题,但它不适用于自定义内容。这是代码:
<script>
angular.module('app').directive('myDirective', function ()
{
return {
restrict: 'EA',
replace: true,
transclude: {"Result":"?uploaderResult"},
controller: function ($scope){
$scope.doSth1=function(){}
$scope.doSth2=function(){} },
templateUrl:"template.html" });
</script>
并且template.html是
<div ng-transclude="Result">
<a ng-click="doSth1()">Default Content</a>
</div>
这可以按预期工作。使用该指令的页面:
<uploader-result>
<a ng-click="doSth1()">Customized Content</a>
</uploader-result>
这不起作用。我用Google搜索,发现我可以使用$$ nextSibling.doSth1(),这没关系。但是如果使用ng-repeat调用doSth1(),它将再次停止工作。我把它改成了$ parent。$$ nextSibling.doSth1(),仍然没有用。
提前致谢。