使用$ compileProvider来避免不安全的链接

时间:2016-05-27 20:41:31

标签: javascript angularjs

我注入$ scope和$ location以及$ routeProvider之类的东西没问题,为什么$ compileProvider不同?

基于this answer,我明白我必须指示angular不要为某些链接添加前缀(在我的情况下是短信),但我不能在我的项目中应用答案。它说我应该补充一下:

angular.module('myModule', [], function ($compileProvider) {
    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
});

但Chrome控制台说:

  

“angular.js:68未捕获错误:[$ injector:unpr]未知提供商:   $ compileProviderProvider< - $ compileProvider“

“提供者 - 提供者”的事情让我觉得服务的真实名称只是$ compile(而且这个角度正在“提供者”后缀上添加:

angular.module('myModule', [], function ($compile) {
    $compile.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
});

然而,可以预见,我猜,我得到了:

  

angular.js:13550 TypeError:$ compile.aHrefSanitizationWhitelist不是函数

1 个答案:

答案 0 :(得分:6)

那是因为您必须将其添加为配置:

angular.module('myModule').config(['$compileProvider',
  function($compileProvider) {
    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
  }
]);