私が取り組んでいるプロジェクトのリッチ テキスト ソリューションとしてtextangularを使用しています。
特定の html タグのみを許可するため、この入力をサニタイズする必要があります。
これは textangular のデフォルトの可能性ではないため、textangular ディレクティブをラップするディレクティブを作成しました。入力テキストを正常にサニタイズできますが、ビューは更新されず、これを達成する方法のアイデアが不足しています
指令:
.directive('chTextAngular', function(){
return {
restrict: 'E',
require: 'ngModel',
template: function(elements, attributes) {
return '<div text-angular ng-model="' + attributes.ngModel + '" id="' + attributes.id + '"></div>';
},
link: function(scope, element, attributes, ngModel) {
scope.$watch(attributes.ngModel, function(n, o) {
if(n !== undefined) {
// Replace all the divs with <br> tags
var sanitized = ngModel.$viewValue.replace(/<div>/gm, '<br>').replace(/<\/div>/gm, ' ');
sanitized = sanitized.replace(/<p>/gm, '').replace(/<\/p>/gm, '<br><br>');
sanitized = $.htmlClean(sanitized, {
allowedTags: ["strong", "em", "ul", "ol", "li", "a", "b", "i", "br"],
allowedAttributes: ["a", "href"]
});
console.log(sanitized);
ngModel.$setViewValue(sanitized);
}
});
}
}
});
ログにモデルが出力され、実際に変更されていることが示されます。textangular で実際のテキストエリアを更新する方法がわかりません。
誰かがこれを手伝ってくれますか、それとも正しい方向に向けてくれますか?