从事件回调内部更改绑定的角变量

Change bound angular variable from inside event callback

本文关键字:绑定 变量 事件 回调 内部      更新时间:2023-09-26

我试图改变输入字段的值时,视频加载。以下是相关代码:

如此:

$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);
    };
};

为了保持简短,我在那里留下了一些关键的视频内容,但那部分正在工作,并且onloaded元数据正在正常发射,所以它的角度和输入有些奇怪。但是,如果您怀疑我遗漏了一些相关代码,请告诉我。

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);
    };
};

video.onloadedmetadata可能是一个异步调用,直到摘要循环之后才返回。改成这样:

$scope.stopRecording = function () {
    video.onloadedmetadata = function() {
        $scope.$apply(function() {
          $scope.videoEndPos = 10;
        });
    };
};