TypeError: Cannot call method 'insertBefore' of null on $compile

TypeError: Cannot call method 'insertBefore' of null on $compile

我正在尝试构建递归指令。

看起来像这样:

var theTemplate = 
        '<span>{</span>' + 
            '<div>'+
                '<p>{{argVal}}</p>' +
                '<custom-args arg-val="argVal[0]"></custom-args>' +
            '</div>';

    return {
        restrict: "E",
        scope: {
            argVal: '='
        },
        controller: function($scope){
            //just some utilities
        },
        link: function(scope, element){
            element.html('').append(theTemplate);
            $compile(element.contents())(scope);
        }
    };      

问题是,当我 运行 它时,我得到:

Angularjs: TypeError: Cannot call method 'insertBefore' of null

有什么问题?

问题在于

            element.html('').append(theTemplate);
            $compile(element.contents())(scope);

而不是将模板附加到空白 HTML,我需要像这样直接将它附加到 HTML

            element.html(theTemplate);
            $compile(element.contents())(scope);

现在可以了!