我试图在调用指令后插入将在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);
}));
});
});
答案 0 :(得分:2)
试试这个:
$compile($(this))($scope.$parent);
附加信息:由于在父作用域中声明了nodeInfo(),因此应将父作用域传递给$ compile。