我有通過json提要添加數據,並且數據通過過濾器來整理它/添加一些額外的元素,所有工作正常。不過,我已經添加了一個新的過濾器來查找圖像,並添加ng單擊標記來做全屏模態圖像,令人討厭的是點擊事件從不會觸發。ng-click通過過濾器添加到圖像無法正常工作
.filter('html_filters', function ($sce) {
return function (text) {
var htmlObject = document.createElement('div');
htmlObject.innerHTML = text;
var imgs = htmlObject.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
var link = imgs[i].getAttribute('src');
imgs[i].setAttribute('ng-click', 'loadImage("' + link + '")');
}
return $sce.trustAsHtml(htmlObject.outerHTML);
}
})
HTML:
<p class="postcon arrow-list" ng-if="content" ng-bind-html="content | html_filters"></p>
渲染HTML:
<img class="aligncenter" src="http://www.sdssdsdsdsd.co.uk/connect/wp-content/uploads/2016/08/sdsdsd-August-20162-1.jpg" alt="Exhibit 1" ng-click="loadImage("http://www.sdssdsdsdsd.co.uk/connect/wp-content/uploads/2016/08/sdsdsd-August-20162-1.jpg")">
Click事件:
$scope.loadImage = function (url) {
console.log("Loading Image");
}
該日誌事件永遠不會觸發
此工作必須使用指令而不是過濾器完成。任何使用數據創建/更新/刪除DOM必須使用指令處理。 –
正如所述的DOM操作是爲指令做和綁定動態創建的HTML你還需要使用'$ compile',你可以[檢查這個問題](http://stackoverflow.com/questions/19267979/ng-點擊不工作從動態生成HTML)爲例。 – GillesC
您似乎也有一個編碼問題'"'而不是正確的引用會在點擊處理程序嘗試運行時產生更多錯誤。 – GillesC