添加新指令时,angular $ compile不起作用

时间:2016-03-26 15:48:19

标签: angularjs

    (function(){

        angular
            .module('main')
            .directive('search', search);

        search.$inject = ['$compile'];

        function search($compile){

            return {
                link: function(scope, ele, attrs){
                    ele.bind('click', function(){
                        var template = "<search-results>{{searchCtrl.results.length}}</search-results>";
                        $compile(template)(scope);
                        $('.resultsContainer').append(template);
                    });
                }
            }

        }

    })();

<search-results></search-results>是另一个指令,如下所示:

(function(){

    angular
        .module('main')
        .directive('searchResults', searchResults);

    searchResults.$inject = [];

    function searchResults(){

        return {
            templateUrl: 'main/views/resultsContainer.client.view.html',
            link: function(scope, ele, attrs){
                ele.bind('click', function(){

                });
            }
        }

    }

})();

我试图在开头()添加的指令没有被编译,我得到了这个

<search-results>{{searchCtrl.results.length}}</search-results>

作为输出。范围值不会注入其中。但新指令自我添加了另一个模板,这是完成的。我在控制台中看到了对模板的请求。

有人能找到我的错误

1 个答案:

答案 0 :(得分:1)

您需要附加$compile返回的结果

尝试更改:

 $compile(template)(scope);

template = $compile(template)(scope);