理解Angular指令

时间:2014-03-31 19:06:34

标签: angularjs angularjs-directive

我发现这个指令用于读取文件。它工作得很好,但我想了解它是如何工作的。一旦我有了一个很好的理解,我想在这个指令中设置一个元素背景图像到现在的BASE64图像。任何帮助都会很棒。

.directive("fileread", [function () {
    return {
        scope: {
            fileread: "="
        },
        link: function (scope, element, attributes) {
            element.bind("change", function (changeEvent) {
                var reader = new FileReader();
                reader.onload = function (loadEvent) {
                    scope.$apply(function () {
                        scope.fileread = loadEvent.target.result;
                    });
                }
                reader.readAsDataURL(changeEvent.target.files[0]);
            });
        }
    }
}]);

1 个答案:

答案 0 :(得分:2)

此指令使用大多数现代浏览器中的新FileReader API。此API允许浏览器使用输入类型=文件控件选择的文件可供JavaScript处理。简而言之,您初始化阅读器,在文件加载后为其提供运行功能,然后告诉它加载文件。您可以使用JavaScript直接将此绑定到输入,也可以通过这样的指令将其绑定到输入。该指令调用$ scope。$ apply,因为它使用了element.bind,它没有将动作链接到$ scope。

相关问题