我试图在视频加载时更改输入字段的值。这是相关代码:
这有效:
$scope.stopRecording = function () {
// value of the input changes as expected
$scope.videoEndPos = 10;
};
这不是
$scope.stopRecording = function () {
video.onloadedmetadata = function() {
$scope.videoEndPos = 10;
// the value of the input does not change, but this still correctly outputs 10
console.log($scope.videoEndPos);
};
};
为了保持这个简短,我在那里省略了一些重要的视频内容,但是那部分正在工作,onloadedmetadata正在正常启动,所以它的角色和输入都很时髦。但是,如果您怀疑我遗漏了一些相关代码,请与我们联系。
答案 0 :(得分:2)
video.stopRecording
发生在Angular宇宙之外,所以它不知道变化。您需要使用的是$scope.$apply,它允许您从Angular外部执行对范围的更改。
$scope.stopRecording = function () {
video.onloadedmetadata = function() {
$scope.$apply(function(){
$scope.videoEndPos = 10;
});
// the value of the input does not change, but this still correctly outputs 10
console.log($scope.videoEndPos);
};
};
答案 1 :(得分:1)
video.onloadedmetadata
可能是异步调用,直到摘要循环之后才会返回。将其更改为:
$scope.stopRecording = function () {
video.onloadedmetadata = function() {
$scope.$apply(function() {
$scope.videoEndPos = 10;
});
};
};