我们可以在$ compile中使用ng-transclude吗?

时间:2014-11-20 09:31:57

标签: angularjs angularjs-directive

我们可以在指令中编译ng-transclude,如下所述。我收到错误:

  

[ngTransclude:orphan]非法使用ngTransclude指令   模板!没有找到需要转换的父指令。   元素:

我的代码:

ngApp.directive("floater", ['$compile', function($compile) { 
    return { 
        restrict: "E", 
        replace: true, 
        transclude: true, 
        require: 'nuTitle', 
        scope: { 
            nuTitle: "=", 
            onMinimize: "&"
        }, 
        template: "<div></div>", 
        link: function(scope, element, attrs) { 
            var template = "<div class='floater'>" + 
                              "<div class='content'>" + 
                              ...
                              "<div class='clearfix' ng-transclude></div>" + 
                              ...
                            "</div>" + 
                           "</div>"; 
            templateObj = $compile(template)(scope); 
            element.append(templateObj); 
        }
    };
}]);

1 个答案:

答案 0 :(得分:0)

问题类似于this

可能的解决方案是更改这些行:

template: "<div ng-transclude></div>",
compile: function compile ( element, attrs) {
    var template = "<div><div>"+element.html()+"</div></div>";

    element.html(template);
}

http://jsfiddle.net/qbt0rsek/2/

这样可以避免错误