我正在尝试在AngularJS中禁用SCE。
根据documentation,这是需要做的:

angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
  // Completely disable SCE.  For demonstration purposes only!
  // Do not use in new projects.
  $sceProvider.enabled(false);
});


这是我的app.config.js:

angular.module('yapoApp').config(['$sceProvider', '$locationProvider', '$routeProvider',  '$httpProvider',
    function config($sceProvider, $locationProvider, $routeProvider,  $httpProvider) {

        // disable SCE completely (https://docs.angularjs.org/api/ng/service/$sce)
        $sceProvider.enabled(false);

        $locationProvider.hashPrefix('!');

        $routeProvider.when('/actors', {
            template: '<actor-list></actor-list>'
        }).when('/actors/:actorId', {
            template: '<actor-detail></actor-detail>'
        }).when('/movies/', {
            template: '<movie-list></movie-list>'
        }).when('/movies/:movieId', {
            template: '<movie-detail></movie-detail>'
        }).otherwise('/'), {
            template: '<br><br><br><br><h1> This is temp index</h1>'

        };


    }

]);


而且我仍然遇到错误:


  [$ interpolate:noconcat]插值时出错:/ static / movies / {{
  $ ctrl.movi​​e.id}} / sample / sample.mp4严格的上下文转义
  不允许在以下情况下连接多个表达式的插值
  必须提供可信值。


导致错误的html模板:

 <video width="{{ $ctrl.videoWidth }}px" controls>
        <source ng-src="/static/movies/{{ $ctrl.movie.id }}/sample/sample.mp4">

        Your browser does not support the video tag.
    </video>


我感觉好像缺少一些简单的语法错误。请帮忙!

最佳答案

首先,您应该从doc进行检查:


  我可以完全禁用SCE吗?
  
  是的你可以。但是,强烈建议不要这样做。 SCE为您提供了许多安全好处,而编码开销却很少。采取禁用SCE的应用程序并自行保护它或在以后的阶段启用SCE会更加困难。如果您在引入SCE之前编写了很多现有代码,并且一次要迁移一个模块,则禁用SCE可能很有意义。


好吧,我认为在这种情况下您不需要禁用SCE,而且例如,如果您使用ngBindHtml呈现一些HTML,除非分配给ngBindHtml的作用域变量用包裹,否则AngularJS将抛出错误。 $sce.trustAsHtml

但是,让我们回到这个错误,它可以说明一切:


  插值时出错:/ static / movies / {{$ ctrl.movi​​e.id
  }} / sample / sample.mp4


您只需要以正确的方式将其连接起来,就像这样:

<source ng-src="{{'/static/movies/' + $ctrl.movie.id + '/sample/sample.mp4'}}">


希望能帮助到你!!

关于javascript - 在AngularJS中禁用严格的上下文转义(SCE),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38283191/

10-11 11:14