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 也不會有影響的 一樣能在復制之后能生效 。
