我正在努力了解$ sce和ngSanitize是如何工作的,所以我可以正确使用它,请提出几个问题,以便澄清。我无法从文档中获得足够的细节。
首先,我理解$ sce为输入提供了一个自动启用的转义服务?
那个男人我不需要明确使用$ sce吗?控制器中的$ scope变量是否自动转义。或者我是否需要明确调用$ sce.trustAs / ParseAs?
这是否适用于指令?
示例是以下指令safe:
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));
};
}
答案 0 :(得分:0)
至于指令,你可能会研究" ng-bind-html"工作原理:
var parsed = $parse(attr.ngBindHtml);
element.html($sce.getTrustedHtml(parsed(scope)) || '');
所以我认为$ sce仍然必须在你的自定义指令中明确使用。