好的,在我的指令中,我插入了一些包含ng-click的html,并且由于Angular不相信我,我需要通过$ sce.trustAsHtml来运行它:
(randomvalue只是一个随机生成的随机令牌)
$scope.trustedHtml = $sce.trustAsHtml("<span ng-click=\"myfunction(\'" + randomvalue + "\')\">Click Me!</span>");
$('#myelement').append($compile($('<span ng-bind-html="trustedHtml"></span>'))($scope));
$scope.apply();
问题在于每次调用函数时$ scope.trustedHtml都会改变随机值&#39;使用$ apply时页面上的所有元素。这意味着所有ng-clicks将改为&#34; ng-click =&#34; myfunction(&#39;这些现在都是相同的令牌!&#39;)&#34;&#34;
但是使用&#34; var trustedHtml&#34;由于某种原因而不是$ scope导致Sanitize在第一个空白区域的ng-click表达式中添加双引号,并且如果我用html字符替换所有空格,则会添加一个额外的空格然后是双引号。
那么我应该如何使用不同的变量插入多个ng-clicks?有没有办法去&#34;取消范围&#34;应用后的$ scope.trustedHtml?或者有没有办法阻止Sanitize用额外的双引号破坏我的HTML?