Javascript $apply在onchange调用中不起作用
我有一个文件上传工作,并试图添加一个微调器图标,以显示该文件正在被放入内存。“表单保存/提交”按钮将被禁用,直到文件完全存储在内存中。现在我有旋转器工作,但它打破了我的按钮 以前的HTML:Javascript $apply在onchange调用中不起作用,javascript,angularjs,html,Javascript,Angularjs,Html,我有一个文件上传工作,并试图添加一个微调器图标,以显示该文件正在被放入内存。“表单保存/提交”按钮将被禁用,直到文件完全存储在内存中。现在我有旋转器工作,但它打破了我的按钮 以前的HTML: <div class="form-group"> <label class="col-xs-12 col-sm-4">Image <span class="required_field">*</span>:</label> <
<div class="form-group">
<label class="col-xs-12 col-sm-4">Image <span class="required_field">*</span>:</label>
<input class="input-dnld" id="loadImg" type='file' placeholder="Select an image to upload" name="topoImg" onchange="angular.element(this).scope().readimg(this)" accept="image/*" required>
<label for="loadImg" required><span class="glyphicon glyphicon-open glyph-style"></span>Select an image to upload</label>
</div>
...
<button ng-click="saveTopo()" ng-disabled="frmNode.$invalid || !image" class="btn btn-default action_btn_style">Save</button>
当前JS功能:
$scope.readimg = function(ele) {
$scope.image = ele.files[0];
}
$scope.readimg = function(ele) {
$scope.imgupload = true;
$scope.$apply();
$scope.image = ele.files[0];
$scope.imgupload = false;
$scope.$apply();
}
我添加了$apply和一个布尔变量来显示图像正在上传。在添加$apply之前,函数中的布尔值直到函数返回后才被更改。添加$apply后,会显示微调器,但该按钮在微调器消失之前很久就已启用。我试图用布尔值修改condition语句,但它似乎没有更新。由于angularjs中缺少对文件类型字段的ng更改支持,而我是web开发的初学者,因此我正在琢磨如何使这一更改生效 调用函数时,按钮不会立即启用,因为if语句中有imgupload。这是一个奇怪的设置,理想的做法是为此创建一个指令。如何使其工作,可以在中添加setTimeout和execute$scope.$apply()it@sebenalern你是说ng残疾人领域吗?我不知道如何启用它。@DayanMorenoLeon我想看一个示例指令。我已经研究了角度模块,但还没有找到一个适合我需要的。如果有更好的方法,请让我知道。创建一个限制为的指令,使其隔离作用域。将内部函数附加到onChange事件处理程序。公开onStart和onFinish事件,然后从指令中执行这些函数,以通知当前范围的上载状态
$scope.readimg = function(ele) {
$scope.imgupload = true;
$scope.$apply();
$scope.image = ele.files[0];
$scope.imgupload = false;
$scope.$apply();
}