【问题标题】:Can we use ng-transclude inside $compile?我们可以在 $compile 中使用 ng-transclude 吗?
【发布时间】:2015-01-18 02:30:42
【问题描述】:

我们可以在指令中编译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); 
        }
    };
}]);

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    问题类似于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/

    这样你就避免了错误

    【讨论】:

      猜你喜欢
      • 2013-11-28
      • 2016-08-31
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2020-03-21
      • 2011-08-21
      相关资源
      最近更新 更多