angular.js - angular如何获取一段html代码赋值到另一个地方,html里面的ng-click事件还要能生效?
问题描述
我要使用一个ng-click点击获取一段html,这个html里面还有个ng-click事件,我用js找到这段html然后赋值到一个弹层里面,这个html的ng-click事件就无效了,怎么整?$scope.readmore_maincomment = function(event){
var html = $(event.target).parent('.subcomments').prev().html(); $('.subcomments_detail').find('.subcomment_con').html(html);};
代码是简写的,就是这样获取的内容,可能方法用错了,把angular与jQuery混用了,谁能告诉我怎么获取这个html内容,然后html里的ng-click还要能生效
问题解答
回答1:angular在启动初期会遍历dom,找出所有在html里绑定的directive进行compile和link后,类似`v-click`这样的指令才会在所在的dom元素上绑定响应事件。如果直接将html字符串插入到dom中angular是没有机会解析这串html里的指令。为了解决这一问题,angular内置的$compile service.
Usage:
inject $compile service
$compile(htmlstring or domelement)(scope)
如果compile htmlstring 最后在将link后的返回插入到dom中
$compile() return a link function which bind the template to a scope
官网文档:
https://docs.angularjs.org/api/ng/service/$compile
回答2:angularjs的思想应该尽量避免对dom的操作,你的需求应该通过其他的方式实现,通过数据的绑定达到你的目标,或者你可以使用ng-template来做。
回答3:dom的操作都是在 指令里面的,你要将你当前要操作的dom结构写成指令 ,然后link函数中的参数中有ele可以供你操作,你想要复制的那段html有ngclick 也不会有影响的 一样能在复制之后能生效 。