AngularJS错误:$ interpolate:interr插值错误

时间:2014-08-03 02:58:14

标签: javascript angularjs

我正在尝试使用AngularJS将YouTube视频插入我的网站,但我仍然遇到同样的错误:

Error: $interpolate:interr Interpolation Error

为什么我会收到此错误,如何摆脱它?我想要的只是插入视频......

App.js

var myApp = angular.module('myApp', [
    'duScroll', 'duParallax', 'angularFileUpload', 'ngRoute', 'ngSanitize'
]);

myApp.filter('youtube', ['$sce', function($sce) {
    return function(val) {
        var videoLink = val;
        var watch = val.indexOf("?v=") + 3;
        var playlist = val.indexOf('&') + 1;

        if (playlist > 0) {
            return $sce.getTrustedResourceUrl('//www.youtube.com/embed/' + val.substring(watch, playlist));
        } else {
            return $sce.getTrustedResourceUrl('//www.youtube.com/embed/' + val.substring(watch, videoLink.length));
        }
    };
}]);

index.jade

iframe(ng-if="story.media.video" src="{{ story.media.video | youtube }}" frameborder="0" allowfullscreen)

2 个答案:

答案 0 :(得分:3)

在这种情况下,它将seem simpler to whitelist youtube嵌入路径并删除过滤器。

另外,您还应该使用ng-src代替src作为iframe。

myApp.config(["$sceDelegateProvider", function($sceDelegateProvider) {
    $sceDelegateProvider.resourceUrlWhitelist([
        'self',
        "http://www.youtube.com/embed/**"
    ]);
}]);

答案 1 :(得分:0)

我用这个Jquery基本解决了:

src="http://www.youtube.com/embed/bSMInVPIE8o?autoplay=1"
$JQ('iframe').attr('src',src);