Während Antworten, die vorschlagen, in irgendeiner Weise zu rendern, Ihr Problem möglicherweise lösen, wenn Sie Zugriff auf die API des Players haben, wäre es schön zu sehen, wenn das Video in der willDestroyElement
Ihrer Ansicht nicht beheben wird Das.
Auch könnten Sie Ihren Video-Player ist eine Ember Komponente haben, um sicherzustellen gutes Setup, Teardown und Update:
App.VideoPlayerComponent = Ember.Component.extend({
source: null, // used in the template using that component
isPlayerReady: false, // used to know internally if the player is ready
setupPlayer: (function(){
// somehow setup the video player if needed
// (if Flash player for example, make the flash detection and whatever)
// once ready, trigger our `videoPlayerReady` event
this.set('isPlayerReady', true);
this.trigger('videoPlayerReady');
}).on('didInsertElement'),
updatePlayerSource: (function(){
// start playing if we have a source and our player is ready
if (this.get('isPlayerReady') && this.get('source'))
{
// replace with the correct js to start the video
this.$('.class-of-player').videoPlay(this.get('source'));
}
}).observes('source').on('videoPlayerReady'),
teardownSource: (function(){
// stop playing if our player is ready since our source is going to change
if (this.get('source') && this.get('isPlayerReady'))
{
// replace with the correct js to stop the player
this.$('.class-of-player').videoStop();
}
}).observesBefore('source'),
teardownPlayer: (function(){
// teardown the player somehow (do the opposite of what is setup in `setupPlayer`)
// then register that our player isn't ready
this.set('isPlayerReady', false);
}).on('willDestroyElement')
});
Dies ermöglicht es Ihnen sicher zu sein, alles ist Setup und Teardown richtig, und da es eine Komponente Sie können es wiederverwenden, es ist sehr einfach, einen Fallback zu einem Flash-Player zum Beispiel zu haben.Dann, was Sie haben zu handhaben und so den Spieler im Zusammenhang zu beheben, wird es in dieser Komponente sein, und Sie müssen nur den Teil der Vorlage ersetzen mit dem Spieler mit:
{{video-player source=ctrl.videoUrl}}
Meine Vermutung ist, dass der Quell-Tag nicht dynamisch die src unterstützt Modifizieren, nachdem es geladen ist . – Kingpin2k
http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#the-source-element, Dynamisches Ändern eines Quellenelements und seines Attributs, wenn das Element bereits in ein Video eingefügt wurde oder Audio-Element wird keine Wirkung haben. – Kingpin2k
Interessant @ Kingpin2k Wie würde man das auf "Glut" -Lösung lösen? –