J'ai une configuration de base de lecteur vidéo Videogular pour lire des vidéos de Firebase Storage. Dans la vue HTML cela fonctionne:
<div ng-controller="MyController as controller" class="videogular-container">
<videogular vg-theme="controller.config.theme.url">
<vg-media vg-src="controller.config.sources" vg-native-controls="true"></vg-media>
</videogular>
</div>
Dans le contrôleur cela fonctionne:
var ref = firebase.database().ref(); // Create Firebase reference
var obj = $firebaseObject(ref.child($routeParams.id)); // get the record with the key passed in from the URL
var controller = this; // controller refers to the controller object
obj.$loaded(// wait until the async data loads from the remote Firebase
function(data) {
// video player
controller.config = { // provides an object to the controller
preload: "auto",
sources: [
// My Firebase video
{src: $sce.trustAsResourceUrl($scope.wordObject.videos[0].videoURL), type: "video/" + $scope.wordObject.videos[0].videoMediaFormat},
// The Videogular test videos
{src: $sce.trustAsResourceUrl("http://static.videogular.com/assets/videos/videogular.mp4"), type: "video/mp4"},
{src: $sce.trustAsResourceUrl("http://static.videogular.com/assets/videos/videogular.webm"), type: "video/webm"},
{src: $sce.trustAsResourceUrl("http://static.videogular.com/assets/videos/videogular.ogg"), type: "video/ogg"}
],
theme: {
url: "http://www.videogular.com/styles/themes/default/latest/videogular.css"
}
};
},
function(error) {
console.log("Error: ", error)
});
Tout fonctionne, pour jouer une vidéo. Maintenant, je veux accéder dynamiquement à des tableaux de vidéos par thème. Par exemple, l'utilisateur clique pour voir toutes mes vidéos de chat ou clique sur un autre bouton pour voir toutes mes vidéos de chien. Je les URL Firebase de stockage sur les $scope
et ng-repeat
imprime les URL dans la vue:
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 text-center">
<h3>{{currentTheme}}</h3>
<div>
<div ng-repeat="video in currentVideos">
{{video.videoURL}}
</div>
</div>
</div>
</div>
Cela fonctionne très bien aussi. Donc, pour faire tourner une série de lecteurs vidéo avec toutes mes vidéos de chat que je viens de faire un ng-repeat
avec un nouveau lecteur vidéo pour chaque vidéo, avec le vg-src
venant de la $scope
:
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 text-center">
<h3>{{currentTheme}}</h3>
<div>
<div ng-repeat="video in currentVideos">
<div ng-controller="MyController as controller" class="videogular-container">
<videogular vg-theme="controller.config.theme.url">
<vg-media vg-src="{{video.videoURL}}" vg-native-controls="true"></vg-media>
</videogular>
</div>
</div>
</div>
</div>
</div>
qui ne fonctionne pas . L'erreur est Error: [$parse:syntax]
, ce qui signifie qu'il y a une erreur de syntaxe Angular. L'erreur de syntaxe disparaît lorsque je change le vg-src
retour à vg-src="controller.config.sources"
:
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 text-center">
<h3>{{currentWord}}</h3>
<div>
<div ng-repeat="video in currentVideos">
<div ng-controller="EnglishController as controller" class="videogular-container">
<videogular vg-theme="controller.config.theme.url">
<vg-media vg-src="controller.config.sources" vg-native-controls="true"></vg-media>
</videogular>
</div>
</div>
</div>
</div>
</div>
qui fonctionne. Le problème est que vg-src="controller.config.sources"
fonctionne mais vg-src="{{video.videoURL}}"
ne fonctionne pas. Pourquoi ne peut pas vidéo source vidéo de la $scope
?
J'ai essayé de mettre mes sources vidéo de $scope
sur controller.config
dans le contrôleur mais cela n'a jamais fonctionné. Devrais-je essayer de le faire à nouveau demain? (Il est tard et je deviens confus essayant de comprendre pourquoi je ne peux pas mettre mes sources vidéo du $scope
sur controller.config
dans le contrôleur.)