2016-02-29 41 views
0

我試圖實現一個jQuery library,它將通過AngularJS指令過濾掉褻瀆。我對AngularJS相當陌生,所以我不確定是否愚蠢,我忽略了,但我似乎無法讓過濾工作。這是我的指令(如較長鏈的一部分):在AngularJS指令中實現Profanity過濾器jQuery庫

.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

您需要在textarea上使用'ng-model',並且在您的指令中使用ngModel控制器 – charlietfl

回答

0

我會看scope上的$ applyAsync。它是作爲在$ timeout中封裝這些類型的調用的替代方法而引入的。但是,沒有辦法避免做這兩種選擇中的一種。 Angular沒有辦法知道jQuery插件已經修改了一個值(如果有的話),並且您需要手動告訴Angular它應該再次消化頁面以進行更改。