1

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

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>

我觉得我错过了一些简单的语法错误。请帮忙!

4

2 回答 2

1

首先你应该检查这个,从doc

我可以完全禁用 SCE 吗?

是的你可以。但是,强烈建议不要这样做。SCE 以很少的编码开销为您提供了许多安全优势。使用 SCE 禁用的应用程序并自行保护它或在稍后阶段启用 SCE 将更加困难。如果您有大量在引入 SCE 之前编写的现有代码并且一次迁移它们一个模块,那么禁用 SCE 可能是有意义的。

好吧,我认为在这种情况下你不需要禁用SCE,而且,例如,如果你ngBindHtml用来渲染一些 HTML,AngularJS 会抛出一个错误,除非分配给的范围变量ngBindHtml$sce.trustAsHtml.

但是,让我们回到错误,这不言自明:

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

您只需要以正确的方式连接它,如下所示:

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

希望能帮助到你!!

于 2016-07-09T18:16:54.817 回答
0

我找到了这个。显然,这不是 SCE 问题。这是 Angular 如何与 Html5 Video 相处的问题“来源:标签。

如果只有一个视频源,则 HTML 如下所示:

<video src="ng-src="{{'/static/movies/' + $ctrl.movie.id +  '/sample/sample.mp4'}}" width="{{ $ctrl.videoWidth }}px" controls>    
        Your browser does not support the video tag.
</video>

而不是这个:

<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>

解决问题。

当然,@developer033 是正确的,而我最初的连接是错误的。

于 2016-07-09T20:25:59.993 回答