我试图实现一个jQuery library,它将通过AngularJS指令过滤亵渎。我对AngularJS相当陌生,所以我不确定它是否会被我忽略的愚蠢,但我似乎无法让过滤工作。这是我的指示(作为更长链的一部分):
.directive("censorSwearWords", [
() => {
return {
restrict: 'A',
link: function(scope, element, attrs, ctrl) {
$(element).profanityFilter({
externalSwears: 'swearWords.json'
});
}
}
}
这是我试图将其应用到的元素:
<textarea class="messageTextArea" rows="15" readonly="readonly" censor-swear-words>{{message.body}}</textarea>
然而,过滤并未发生。我相信亵渎读者正试图过滤{{message.body}}
而不是内部的文本。除了使用超时服务之外,AngularJS是否有办法确保它在完全呈现后实际读取{{message.body}
的内容?
答案 0 :(得分:0)
我会查看scope上的$ applyAsync。它被引入作为在$ timeout中包装这些类型的调用的替代方法。但是,没有办法避免做这两个选项之一。 Angular无法知道jQuery插件已经修改了一个值(如果有的话),你需要手动告诉Angular它应该再次消化页面以进行更改。