我应该在动态生成的范围中添加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
进行编译,但在这种情况下我不知道如何执行编译。
我该如何解决?谢谢大家。
答案 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可以正常工作。 谢谢大家。