如何为AngularJS创建双向指令?

时间:2016-07-10 12:07:28

标签: angularjs angularjs-directive

使用AngularJS的第一周,我使用了来自https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs

的文件上传指令代码
app.directive('fileModel', ['$parse', function ($parse) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            var model = $parse(attrs.fileModel);
            var modelSetter = model.assign;

            element.bind('change', function(){
                scope.$apply(function(){
                    modelSetter(scope, element[0].files[0]);
                });
            });
        }
    };
}]);

在阅读内容时效果很好 - 用户选择文件,我在JS中读取它,然后在将其发送到服务器之后我想清除它(通过设置null)。这就是问题 - 它不起作用,<input>中的文件名不会改变。

我应该如何修改它获得双向指令?

1 个答案:

答案 0 :(得分:1)

Angularjs似乎不支持对类型为&#39; file&#39;的输入元素进行双向绑定。请参阅issue

实现所需内容的一种简单方法是在文件上传完成后重置输入值。设置一个ID,说'fileInput&#39;对于输入字段,然后使用:

document.getElementById("fileInput").value = "";

将输入值重置为空白。

这里是Js fiddle的相同内容。