Javascript 从函数返回的Stange值(使用popcorn.js、angular和jade)
谢谢你的阅读 我有一个“奇怪”的问题。我正在一起运行Angular和Jade(在节点服务器上),并实现了popcorn.js(一个html5媒体框架,popcornjs.com) 爆米花上有一个名为currentTime()的事件属性,因此当您调用Popcorn.currentTime()时,它会为您提供它正在播放的视频的当前时间。此功能在console.log(Popcorn.currentTime())中工作;但由于某种原因,当我试图从函数中得到相同的值时,我得到的值是'9' 我会列出我的角度控制器和我的Jade代码。我的问题在//显示当前时间部分: 这是我的角度控制器:Javascript 从函数返回的Stange值(使用popcorn.js、angular和jade),javascript,node.js,angularjs,pug,Javascript,Node.js,Angularjs,Pug,谢谢你的阅读 我有一个“奇怪”的问题。我正在一起运行Angular和Jade(在节点服务器上),并实现了popcorn.js(一个html5媒体框架,popcornjs.com) 爆米花上有一个名为currentTime()的事件属性,因此当您调用Popcorn.currentTime()时,它会为您提供它正在播放的视频的当前时间。此功能在console.log(Popcorn.currentTime())中工作;但由于某种原因,当我试图从函数中得到相同的值时,我得到的值是'9' 我会列出我的角
angular.module('app').controller('mvEditCtrl', function ($scope, mvNotifier,mvIdentity,$location){
$scope.identity = mvIdentity;
$scope.videoID = $location.search().id;
})
//This custom directive holds the loading of the Popcorn video to avoid race condition.
.directive('popcornVideo', ['$timeout', function (timer) {
return {
scope: false,
link: function ($scope) {
timer(function () {
var video = Popcorn.smart(
'#video',
$scope.videoID);
//>>****Show current time.
$scope.theTime = setInterval(function() {
video.currentTime();
console.log(video.currentTime());
var time = video.currentTime();
return time;
},1000);
}, 0);
}
}
}]);
这是我的Jade代码(参见我调用{{theTime}})。值得注意的是,我曾尝试在这里使用ng bind,并在Dom(9)中使用相同的重用结果
所以在重述中,{{theTime}}在页面上呈现为“9”,console.log显示当前的视频时间(2:34)等等
非常感谢 setInterval()
返回计时器的id,以便稍后清除。请改为尝试此操作(使用$interval
服务,以便angular知道时间何时更新
.directive('popcornVideo', ['$interval', function ($interval) {
return {
scope: false,
link: function ($scope) {
var video = Popcorn.smart(
'#video',
$scope.videoID);
//>>****Show current time.
$interval(function() {
$scope.theTime = video.currentTime();
},1000);
}
}
}]);
嗨,安东尼-这对我很有用-非常感谢。关于9是从哪里来的也很有趣。我真的搞不懂。谢谢!杰西
.directive('popcornVideo', ['$interval', function ($interval) {
return {
scope: false,
link: function ($scope) {
var video = Popcorn.smart(
'#video',
$scope.videoID);
//>>****Show current time.
$interval(function() {
$scope.theTime = video.currentTime();
},1000);
}
}
}]);