首次在angular js中编译后插入新的ng-click

时间:2015-10-22 10:29:13

标签: angularjs angularjs-directive

我试图在调用指令后插入将在DOM中插入的标记进行ng-click。在将标记附加到DOM之后,我使用$ compile($(this)($ scope))。但它没有用。

    app.directive('treeDirectiveSysAdminGuide', function ($rootScope, $compile) {
            return {
                restricts: 'A',
                replace: false,
                scope: {
                    options: '='
    }
    link: function (scope, element, attrs) {
                    var deleteNode = null;
                    scope.new_node = 'new Node';
                    scope.reload_node = function () {
                        $(element).each(function () {
                           var id = $(this).closest("li").attr("id");
                           if (treeDeleted[id] == 1)
                               $(this).addClass("deleted");
                        $(this).append("<a><i id = '" + id + "' class='fa fa-info' **ng-click='nodeInfo(" + id + ")'**></i></a>");
                        if (!$(this).find('#' + id).hasClass('compiled')) {
                            $compile($(this).find('#' + id))(scope);
                            $(this).find('#' + id).addClass('compiled');
                        }
                        $(this).before(
                            $("<a class='jstree-anchor'><i class='fa fa-circle'></i></a>")
                                .on('click', function () {
                                    scope.options.activate_node && scope.options.activate_node(id, true);
                                }));
                    });
 });

1 个答案:

答案 0 :(得分:2)

试试这个:

$compile($(this))($scope.$parent);

附加信息:由于在父作用域中声明了nodeInfo(),因此应将父作用域传递给$ compile。