gpt4 book ai didi

javascript - 如何使用 ng-model 双向绑定(bind)到类型 ="file"输入?

转载 作者:行者123 更新时间:2023-11-29 10:34:19 24 4
gpt4 key购买 nike

基本上我想这样做:

<input type="file" ng-model="variable_in_scope">

当我选择一个文件时,variable_in_scope 应该被分配给选择的文件对象。此外,如果 variable_in_scope 的值在我页面的其他任何地方发生更改,它应该更新“选择文件”按钮旁边的文本以指示所选文件已更改。

对于任何其他类型的输入,这都可以。

我不需要做任何花哨的事情,比如实际查看文件的内容。最终,我想发布它,但我发现你可以通过 setting the file object you get into a FormData object 做到这一点,实际上没有将内容读入 Javascript 领域。

我发现了其他关于使用 Angular 选择文件的问题,但没有一个有双向绑定(bind)解决方案。

最佳答案

My answer on another question 提供了一种使用ng-model 执行此操作的方法,但由于该问题不是专门关于双向绑定(bind)的(而且我的答案很难在那里找到),我'将在此处重现:

app.directive('bindFile', [function () {
return {
require: "ngModel",
restrict: 'A',
link: function ($scope, el, attrs, ngModel) {
el.bind('change', function (event) {
ngModel.$setViewValue(event.target.files[0]);
$scope.$apply();
});

$scope.$watch(function () {
return ngModel.$viewValue;
}, function (value) {
if (!value) {
el.val("");
}
});
}
};
}]);

Demo

要使用它,您只需将它添加到您的 Angular 模块,并在您要使用它的文件选择器上包含一个 bind-file 属性。

关于javascript - 如何使用 ng-model 双向绑定(bind)到类型 ="file"输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39313115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com