【发布时间】:2014-12-14 15:16:48
【问题描述】:
我正在使用模式窗口来上传图像。但是当点击上传时,我想上传图片,然后关闭模式窗口。当我在按钮中使用data-dismiss="modal" 作为属性时,它只是关闭了窗口,什么也没做。所以我找到了一些如何关闭它的选项,但一切都是在 Jquery 的帮助下进行的,例如:$('#my-modal').modal('hide'); 但我正在使用 angular 并尝试在控制器中执行此操作,但我没有成功。我也尝试了这些答案Closing Bootstrap modal onclick,但没有运气。
最后我是这样做的:
document.getElementById('fileUpload').value = null;
var dialog = document.getElementById('complete-dialog');
dialog.style.display = 'none';
dialog.className = 'modal fade';
dialog.setAttribute('aria-hidden', 'true');
dialog.removeChild(dialog.firstChild);
它会关闭模态窗口,但我无法在我的网页上滚动。我不知道如何做得更好。
谁能帮我弄清楚如何从 angularjs 关闭模式窗口,或者至少我如何在 angularjs 中使用 jquery?
编辑: 我打开模式窗口的 HTML:
<div class="image col-lg-2 col-lg-offset-2 col-md-3 col-md-offset-1 col-sm-3 col-sm-offset-1">
<button class="btn btn-fab btn-raised btn-primary" data-toggle="modal" data-target="#complete-dialog"><i class="mdi-image-edit"></i></button>
</div>
HTML 模态窗口:
<div id="complete-dialog" class="modal fade" tabindex="-1">
<div id="test-dialog" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close close-btn" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" style="color: black;">Upload profile picture</h4>
</div>
<div class="modal-body" style="color: black;">
<form name="userForm" data-ng-submit="profile.uploadImageToServer()" autocomplete="off">
<div class="form-group">
<!--<label for="fileUpload">Profile image</label>-->
<input type="file" name="fileUpload" id="fileUpload" onchange="angular.element(this).scope().uploadImg(this.files)">
</div>
<div class="text-center form-group">
<button id="submit-btn" type="submit" class="btn btn-large btn-primary">Upload Image</button>
</div>
</form>
</div>
<!--<div class="modal-footer">-->
<!--</div>-->
</form>
</div>
</div>
</div>
角度控制器:
me.uploadImageToServer = function(){
console.log('uploading');
console.log($scope.file);
var fd = new FormData();
//Take the first selected file
fd.append('file', $scope.file[0]);
if($scope.file.length>0) {
me.user.image = '/img/'+ me.user._id + (($scope.file[0].type.indexOf('png') > -1) ? '.png' : '.jpg');
User.update(me.user, function(response){
AuthenticationState.user = response.data;
}, function(response){
console.log(response);
});
User.uploadImage(fd, function (response) {
console.log(response);
me.user.image = me.user.image + '?time=' + new Date().getTime();
AuthenticationState.user.image = me.user.image;
document.getElementById('fileUpload').value = null;
//var dialog = document.getElementById('complete-dialog');
//dialog.style.display = 'none';
//dialog.className = 'modal fade';
//dialog.setAttribute('aria-hidden', 'true');
//dialog.removeChild(dialog.firstChild);
$scope.$close(me.file);
me.file = [];
}, function (response) {
console.log(response);
me.file = [];
});
}
};
【问题讨论】:
-
使用
document.querySelector('#complete-dialog').modal('toggle'); -
试过了,但它对我不起作用,但我编辑了问题并添加了一些代码示例
标签: javascript jquery angularjs twitter-bootstrap mean-stack