如何使用angularjs将数据从指令传递给控制器​​?

时间:2017-08-25 22:43:17

标签: javascript angularjs angular-directive

我想显示文件上传(文件阅读器)的进度。

这是我的HTML:

<md-progress-linear id="file-progress-indicator" md-mode="determinate" value="{{progress}}"></md-progress-linear>

这是我的指示:

angular.module('image.directives').directive('edFileUploader', ['$parse', '$mdDialog', '$mdBottomSheet', '$timeout', 'toastr', function($parse, $mdDialog, $mdBottomSheet, $timeout, toastr) {

    return {
        restrict: 'A',
        link: function($scope, el, attrs) {
            var setter = $parse(attrs.edFileUploader)($scope);

            $(el[0]).on('change', function(e) {

                var reader = new FileReader();

                    if (setter) {
                        setter(event.target.result, el);

                        if (typeof attrs.edCloseAfter !== 'undefined') {
                            $mdBottomSheet.hide();
                        }
                    }
                };

                reader.onprogress = function(data) {
                    if (data.lengthComputable) {
                        var progress = parseInt(((data.loaded / data.total) * 100), 10);
                        // $scope.progress = progress;
                    }
                }

                if (e.target.files[0] != undefined) {
                    reader.readAsDataURL(e.target.files[0]);
                    $scope.loading = false;
                    el.next().removeClass('loading');
                    $scope.done = true;
                } else {
                    $scope.loading = false;
                    el.next().removeClass('loading');
                    $scope.done = true;
                }
            });

        }
    }
}]);

如何从reader.onprogress传递变量进度,以便进度条按预期工作?

1 个答案:

答案 0 :(得分:0)

请参阅:thisAngle + sliceDegrees

这里我们使用该方法从direcctive发送数据到控制器。 这里测试是元素指令,属性是 data-method =&#34; ctrlFn&#34;

可能有帮助,