Skip to content

Instantly share code, notes, and snippets.

@kaorun343
Last active October 6, 2015 12:52
Show Gist options
  • Save kaorun343/1e4788094d71cfbf094b to your computer and use it in GitHub Desktop.
Save kaorun343/1e4788094d71cfbf094b to your computer and use it in GitHub Desktop.
yNQWGP
div#app.container
.panel.panel-default
.panel-heading
h3.panel-title YouTube API
.panel-body
youtube(v-repeat="list")
.panel-footer
button.btn.btn-default(type="button", v-on="click: check") add
template#youtubeComponent
div
div(v-el="target")
Vue.component 'youtube',
props: ['videoId']
data: ->
age: 40
template: '#youtubeComponent'
ready: ->
if YT? and YT.Player?
@createPlayer()
else
old = window.onYouTubeIframeAPIReady or () -> return
window.onYouTubeIframeAPIReady = =>
old()
@createPlayer()
return
return
methods:
createPlayer: ->
@player = new YT.Player @$$.target,
height: 390
width: 640
videoId: @videoId
events:
onReady: @onPlayerReady
onStateChange: @onPlayerStateChange
return
onPlayerReady: ->
@$dispatch 'youtube:player:ready', @videoId
return
onPlayerStateChange: (event) ->
return
id = "M7lc1UVf-VE"
app = new Vue
el: '#app'
data:
apple: 30
list: [
videoId: "M7lc1UVf-VE"
]
methods:
check: ->
@list.push videoId: id
return
events:
'youtube:player:ready': (id) ->
@apple += id
return
<script src="https://www.youtube.com/iframe_api"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/vue/0.12.8/vue.min.js"></script>
#app {
margin-top: 40px;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment