我有一个带有视频列表的应用,我不想一次加载所有视频,只是当用户选择视频然后选择播放时(是的,这是一个两步过程)。
因此,当用户选择视频时,我尝试仅将该视频的iframe播放器嵌入到所选元素中。
在我的控制器中,我有
$scope.selectedVideo = function(index){
if($scope.activeVideo===index)return; // preventing bubbling from closeSelected (I hope)
if($scope.activeVideo !== null){
$scope.closeSelected();
}
var video = $scope.videos[index];
video.embed = '<span><iframe src="https://www.youtube.com/embed'+video.id+'"></iframe> does something show?</span>';
video.active = true;
$scope.activeVideo=index;
}
在我的HTML中,我有
<div ng-bind-html="video.embed"></div>
我尝试了各种ng-bind-html-unsafe
(我认为已弃用),但实际上没有任何内容将iframe放入页面。
我正在使用角度版本1.2.15,并且我在控制器中包含了ngSanitize。
答案 0 :(得分:1)
我认为你正在犯这个错误。也就是说,如果你真的想输出像你一样的html,那么就像你说的那样弃用ng-bind-html-unsafe。新方法是注入$ sce并使用trustAsHtml
http://docs.angularjs.org/api/ng/service/$sce
您可以制作这样的过滤器:
app.filter('unsafe', ['$sce',
function($sce) {
return function(val) {
return $sce.trustAsHtml(val);
};
}
]);
然后在你的HTML中执行以下操作:
<div ng-bind-html="video.embed | unsafe"></div>
不确定video
是否真的属于范围?但实际上听起来你做错了。您是否尝试过使用ng-view?这样您就可以交换该视图的内容(内容为iframe)。
http://docs.angularjs.org/api/ngRoute/directive/ngView
希望它有所帮助!