如何动态添加ng-click到span?

时间:2017-01-26 13:28:56

标签: javascript angularjs

我应该在动态生成的范围中添加ng-click指令。 span包装所选文本。

range = window.getSelection().getRangeAt(0);
var span = document.createElement("span");
$(span) .addClass("comment")
           .attr("id", short_id +"_"+ n_comment)
           .attr("ng-click", "showComment()")
           .append(range.extractContents());
range.insertNode(span);

以上代码获取选择并用span填充它,但ng-click不起作用 由于angular指令是动态生成的,因此应该使用$compile进行编译,但在这种情况下我不知道如何执行编译。

我该如何解决?谢谢大家。

1 个答案:

答案 0 :(得分:1)

我用自己的代码解决了这个问题:

range = window.getSelection().getRangeAt(0);
var span = document.createElement("span");
$(span) .addClass("comment")
           .attr("id", short_id +"_"+ n_comment)
           .attr("ng-click", "showComment()")
           .append(range.extractContents());
range.insertNode(span);
getScope(span);

功能getScope

function getScope(el){
    var $scope = angular.element(el).scope();
    $scope.view(el);
}

通过这种方式,我获得了span的范围,并在view()函数中编译了动态生成的html:

$scope.view = function(element){
    $compile(element)($scope);
}

编译元素后,ng-click可以正常工作。 谢谢大家。