【发布时间】:2015-07-23 11:04:08
【问题描述】:
见小提琴:http://jsfiddle.net/hejado/7bqjqc2w/
我正在尝试使用 angular 来 form.reset() 我的表单。
HTML:
<div ng-controller="formCtrl">
<form name="resetme" id="resetme">
<input ng-model="text" type="text" />
<input file-model="file" type="file" />
<button type="button" ng-click="resetForm()">reset</button>
</form>
</div>
JS:
.controller('formCtrl', function($scope) {
$scope.resetForm = function() {
//$scope.resetme.reset();
document.getElementById('resetme').reset();
};
});
请注意:我正在使用这种表单来 ajax 上传文件。该页面没有刷新,我不想使用任何重置按钮。 (为了简单起见,我在小提琴中使用了一个。)我想在文件上传完成后调用重置函数(通过 http 成功)。
我正在使用
<input type="file" />
所以我不能为所有输入重新分配空值,因为文件输入是只读的。
在 DOM 元素上调用 reset() 函数是可行的,但有人告诉我以 Angular 与 DOM 对话会很糟糕,所以...
我想知道,这将如何以角度方式完成。我尝试命名表单并通过 $scope.formname 引用它,但我无法调用 Web API 函数...(注释行)
我怎样才能做到这一点?
更新 在阅读了一些答案后,我应该明确一点,我正在使用 ngModel 和自定义指令 fileModel 来获取文件对象。
一些解决方案在重置输入字段的值时起作用,但模型没有被清除(文件和文本都没有)。自定义指令就是这个问题的答案,但这有点超出了这个问题的范围。
【问题讨论】:
标签: javascript angularjs