2
我想了解$ sce和ngSanitize是如何工作的,所以我可以正確地使用它,請帶上一些我已經澄清的問題。我無法從文檔中獲得足夠的細節。AngularJS ngSanitize和SCE
首先,我瞭解$ sce爲自動啓用的輸入提供了轉義服務?
那麼這個人我不需要明確地使用$ sce?控制器中的$ scope變量會自動轉義。或者我需要顯式調用$ sce.trustAs/ParseAs?
這是否適用於指令?
例子如下指令安全:
link: function(scope, elm, attrs, ctrl) {
// view -> model
elm.on('blur keyup change', function() {
scope.$apply(function() {
ctrl.$setViewValue(elm.html());
});
});
// model -> view
ctrl.$render = function() {
elm.html(ctrl.$viewValue);
};
}
至於ngSanitize,這似乎是一個模塊,可以自動配置$ SCE合理的默認值,所以也許也許ngSanitize模塊我不需要明確使用$ sce服務?
我還注意到有一個ngModule的$ santize服務,它是如何形成$ sce的?
ngSanitize會自動覆蓋指令嗎?
如果沒有,那麼就是下面的代碼更加安全:
link: function(scope, elm, attrs, ctrl) {
// view -> model
elm.on('blur keyup change', function() {
scope.$apply(function() {
ctrl.$setViewValue(elm.html());
});
});
// model -> view using sanitize
ctrl.$render = function() {
elm.html($sanitize(ctrl.$viewValue));
};
}