我有通过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