javascript - 从事件回调内部更改绑定(bind) Angular 变量

标签 javascript angularjs

我正在尝试在加载视频时更改输入字段的值。相关代码如下:

这个有效:

$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 正在正确触发,所以它的 Angular 和输入有些时髦。但是,如果您怀疑我遗漏了一些相关代码,请告诉我。

最佳答案

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

};

关于javascript - 从事件回调内部更改绑定(bind) Angular 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332422/

相关文章:

javascript - OnClientClick 按钮的 javascript 不起作用

javascript - 使用 velocity.js 循环动画

php - 尝试让 JavaScript 触发 PHP 脚本以向表中添加一行,但它不起作用

javascript - Angular/javascript html 输入类型 'time' 在提交时显示错误时间

javascript - HTML5/jQuery 音频随机播放 onClick

javascript - 如何动态添加属性中的内容?

javascript - 如何从 JSON 数组按月排序对象?

javascript - ng-class 不会打开/关闭类(class)

javascript - 简洁的 Angular 表单验证

javascript - UserApp 用户搜索不返回任何结果