如何在Datatable-AngularJS的单元格中查看$watch type=“files”
我试图在Datatable的单元格内创建一个上载按钮,我有一个click事件的clickHandler。“上载”按钮称为“窗口资源管理器”,我可以选择要上载的文件。为了将文件上载到服务器,我使用$watch检查模型文件的更改,如果有任何更改,它将触发上载功能。此功能将文件上载到服务器。但是$watch似乎从未看到数据表中发生了什么。这是我的密码: 我正在使用angular文件上传,它似乎在网站的其他部分工作,我没有使用datatable中的上传按钮 当我运行代码时,它会弹出alerttest和窗口来选择文件,但它从不调用服务器。在浏览器上看不到网络呼叫 有人能告诉我我的密码有什么问题吗? 多谢各位 视图:如何在Datatable-AngularJS的单元格中查看$watch type=“files”,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我试图在Datatable的单元格内创建一个上载按钮,我有一个click事件的clickHandler。“上载”按钮称为“窗口资源管理器”,我可以选择要上载的文件。为了将文件上载到服务器,我使用$watch检查模型文件的更改,如果有任何更改,它将触发上载功能。此功能将文件上载到服务器。但是$watch似乎从未看到数据表中发生了什么。这是我的密码: 我正在使用angular文件上传,它似乎在网站的其他部分工作,我没有使用datatable中的上传按钮 当我运行代码时,它会弹出alerttest和窗
<td><a class="btn btn-primary" ng-file-select ng-model="files" ng-multiple="true">Upload documents</a> </td>
$watch控制器:
$scope.clickHandler = function (data) {
//alert('upload document');
var appList = JSON.parse($window.sessionStorage.getItem(Constant.ApplicationKey));
var id = data[0];
angular.forEach(appList, function (v) {
if (v.PersonID == id) {
$scope.selectedUserName = v.FirstName + " " + v.LastName;
return;
}
})
$scope.$watch('files', function () {
$scope.upload($scope.files);
alert("test");
})
}
$scope.onClick = function (files) {
console.log('Handler clicked with files:', files);
if (files) {
console.log('Uploading files');
$scope.upload(files);
}
};
上传功能
$scope.upload = function (files) {
if (files && files.length) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
$upload.upload({
url: Constant.BaseUrl + 'api/User/UploadFile',
params: { username: $scope.selectedUserName, Role: 'Student' },
file: file
}).progress(function (evt) {
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
console.log('progress: ' + progressPercentage + '% ' +
evt.config.file.name);
}).success(function (data, status, headers, config) {
console.log('file ' + config.file.name + 'uploaded. Response: ' +
JSON.stringify(data));
});
}
}
};
您不应该每次单击按钮时都创建一个新的观察者$范围。$watch。。。每次都会注册一个新的观察者,你可能会遇到问题 你不能在用户点击后上传文件吗?此外,请尝试不使用jQuery事件侦听器,而是使用角度ng单击,以避免模型/视图不一致: HTML:
实际上,您希望在单击“确切位置”时运行上载?我想您需要等待,直到用户选择了文件模式并选择了他想要上传的文件。ng file select允许用户选择他们想要上传的文件。我认为在这种情况下我不需要模态。@user1874435不,模态是指操作系统中的常规弹出窗口,您可以从中选择文件。我猜您只想在用户在此弹出窗口中选择文件后上传这些文件。当前的ng文件选择将弹出一个窗口供用户选择文件。因此,它是由指令完成的。现在,我需要检查该指令的任何更改,并进行上传。这有意义吗?我知道所有这些,实际上从今天开始我也使用这个指令。我只是想知道你的clickHandler挂在哪里:如果点击事件发生在用户选择文件之后,你不需要观看任何东西,只需上传你的ng模型上的内容
<td ng-click="onClick(files)"> ... </td>
$scope.onClick = function (files) {
console.log('Handler clicked with files:', files);
if (files) {
console.log('Uploading files');
$scope.upload(files);
}
};