javascript - 我如何更改更改 $scope.value 的 ng 类?

标签 javascript angularjs

我遇到了一个很简单的问题,但我还没有找到解决方案。

我需要在更改 $scope.value 后更改 ng-class。

<img src="" alt="" class="img-photo-thumb" ng-class="{'show-photo': photoThumb}">

我的 angularjs:

angular.module('dh-page')
.controller('MyController', ['$scope', function($scope) {
    $scope.initDomEvents = function() {
        document.getElementById("fileUploadPhoto").addEventListener('change', handleFileSelect, false);
    };

    var handleFileSelect = function(event) {
        var file = event.target.files[0];
        $scope.photo_upload = file;

        var render = new FileReader();
        render.readAsDataURL(file);
        render.onload = function(event) {
            var _thumb = document.getElementsByClassName('img-photo-thumb')[0];
            _thumb.src = event.target.result;
            // Here I change the value but nothing changes in html
            $scope.photoThumb = true;
        }
    };
}]);

可以多次更改 ng-class 吗? 感谢您的帮助!

最佳答案

你需要 $scope.$apply 来通知 Angular 变化。

onload方法改为

render.onload = function(event) {
    $scope.$apply(function() {
        var _thumb = document.getElementsByClassName('img-photo-thumb')[0];
        _thumb.src = event.target.result;
        // Here I change the value but nothing changes in html
        $scope.photoThumb = true;
    });
}

关于javascript - 我如何更改更改 $scope.value 的 ng 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31712429/

相关文章:

javascript - 将 2 Node 进程连接到 fakeredis

javascript - HTML5 拖放 getData() 仅适用于 Chrome 中的拖放事件?

javascript - 是否可以在我页面的一个特定部分使用一个 jquery?

javascript - 在 JavaScript 中打开新的浏览器窗口而不使其处于事件状态

javascript - 在 angularJS 中如何处理 $http.post 的异步返回?

javascript - Angular2 形式 : Getting "Object" at console as result of input field element. 值

javascript - 如何在使用重复 Angular Material 时根据屏幕尺寸隐藏一些表格列

javascript - 关闭第二个模态后焦点错误

css - ng-动画中的 ng-repeat 不起作用

javascript - 根据数字条件过滤 ng-repeat 项目