angular.js - angular如何獲取一段html代碼賦值到另一個(gè)地方,html里面的ng-click事件還要能生效?
問題描述
我要使用一個(gè)ng-click點(diǎn)擊獲取一段html,這個(gè)html里面還有個(gè)ng-click事件,我用js找到這段html然后賦值到一個(gè)彈層里面,這個(gè)html的ng-click事件就無效了,怎么整?$scope.readmore_maincomment = function(event){
var html = $(event.target).parent('.subcomments').prev().html(); $('.subcomments_detail').find('.subcomment_con').html(html);};
代碼是簡寫的,就是這樣獲取的內(nèi)容,可能方法用錯(cuò)了,把a(bǔ)ngular與jQuery混用了,誰能告訴我怎么獲取這個(gè)html內(nèi)容,然后html里的ng-click還要能生效
問題解答
回答1:angular在啟動(dòng)初期會(huì)遍歷dom,找出所有在html里綁定的directive進(jìn)行compile和link后,類似`v-click`這樣的指令才會(huì)在所在的dom元素上綁定響應(yīng)事件。如果直接將html字符串插入到dom中angular是沒有機(jī)會(huì)解析這串html里的指令。為了解決這一問題,angular內(nèi)置的$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
官網(wǎng)文檔:
https://docs.angularjs.org/api/ng/service/$compile
回答2:angularjs的思想應(yīng)該盡量避免對(duì)dom的操作,你的需求應(yīng)該通過其他的方式實(shí)現(xiàn),通過數(shù)據(jù)的綁定達(dá)到你的目標(biāo),或者你可以使用ng-template來做。
回答3:dom的操作都是在 指令里面的,你要將你當(dāng)前要操作的dom結(jié)構(gòu)寫成指令 ,然后link函數(shù)中的參數(shù)中有ele可以供你操作,你想要復(fù)制的那段html有ngclick 也不會(huì)有影響的 一樣能在復(fù)制之后能生效 。
