Ajq*_*Ajq 17 javascript angularjs
我正在尝试在角度JS应用程序中实现视频元素,而ng-src将不会读取范围变量
我正在使用1.2.0-rc.2
<!DOCTYPE html>
<html ng-app="ngView">
<head>
<script src="http://code.angularjs.org/1.2.0-rc.2/angular.min.js"></script>
<script>
var app = angular.module('ngView', []);
function MyControl($scope){
$scope.file = '1234.mp4';
}
</script>
</head>
<body ng-controller="MyControl">
<video controls ng-src="http://www.thebigdot.com/{{file}}"></video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果我使用更老版本的AngularJS lib,它可以工作.
cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.3/angular.min.js (works)
Run Code Online (Sandbox Code Playgroud)
这是最新版本中的错误还是故意禁用?有什么工作?
Ahm*_*eed 33
Angular 1.2默认启用Strict Contextual Escaping(SCE).您需要稍微调整一下代码才能使其正常工作.
更改标记,以便ng-src绑定到变量而不是之前设置的URL +变量:
<video controls ng-src="{{videoUrl}}"></video>
Run Code Online (Sandbox Code Playgroud)
添加$sce以注入SCE提供程序并使用该$sce.trustAsResourceUrl方法进行设置videoUrl.
function MyControl($scope, $sce) {
var videoUrl = 'http://www.thebigdot.com/1234.mp4';
$scope.videoUrl = $sce.trustAsResourceUrl(videoUrl);
}
Run Code Online (Sandbox Code Playgroud)
这是这个设置的JS Bin演示.
经过一些调试后我发现错误是这样的:
Error: [$interpolate:noconcat] Error while interpolating: http://www.thebigdot.com/{{file}}
Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce
http://errors.angularjs.org/1.2.0-rc.2/$interpolate/noconcat?p0=http%3A%2F%2Fwww.thebigdot.com%2F%7B%7Bfile%7D%7D at http://code.angularjs.org/1.2.0-rc.2/angular.js:78:12 at $interpolate (http://code.angularjs.org/1.2.0-rc.2/angular.js:6953:17) at attrInterpolateLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5367:27) at nodeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5121:13) at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4640:15) at nodeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5115:24) at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4640:15) at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4643:13) at publicLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4549:30) at http://code.angularjs.org/1.2.0-rc.2/angular.js:1157:27 angular.js:7861
Error: [$interpolate:noconcat] Error while interpolating: http://www.thebigdot.com/{{file}}
Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce
http://errors.angularjs.org/1.2.0-rc.2/$interpolate/noconcat?p0=http%3A%2F%2Fwww.thebigdot.com%2F%7B%7Bfile%7D%7D
at http://code.angularjs.org/1.2.0-rc.2/angular.js:78:12
at $interpolate (http://code.angularjs.org/1.2.0-rc.2/angular.js:6953:17)
at attrInterpolateLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5367:27)
at nodeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5121:13)
at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4640:15)
at nodeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5115:24)
at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4640:15)
at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4643:13)
at publicLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4549:30)
at http://code.angularjs.org/1.2.0-rc.2/angular.js:1157:27 angular.js:7861
Error: [$interpolate:noconcat] Error while interpolating: http://www.thebigdot.com/{{file}}
Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce
http://errors.angularjs.org/1.2.0-rc.2/$interpolate/noconcat?p0=http%3A%2F%2Fwww.thebigdot.com%2F%7B%7Bfile%7D%7D at http://code.angularjs.org/1.2.0-rc.2/angular.js:78:12 at $interpolate (http://code.angularjs.org/1.2.0-rc.2/angular.js:6953:17) at attrInterpolateLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5367:27) at nodeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5121:13) at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4640:15) at nodeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:5115:24) at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4640:15) at compositeLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4643:13) at publicLinkFn (http://code.angularjs.org/1.2.0-rc.2/angular.js:4549:30) at http://code.angularjs.org/1.2.0-rc.2/angular.js:1157:27 angular.js:7861
本文解释了发生了什么以及如何禁用Strict Contextual Escaping:http://docs.angularjs.org/api/ng.$sce
| 归档时间: |
|
| 查看次数: |
28173 次 |
| 最近记录: |