gpt4 book ai didi

angularjs - 使用 $resource 下载文件和显示加载屏幕的 Angular js 方式

转载 作者:行者123 更新时间:2023-12-04 08:55:39 25 4
gpt4 key购买 nike

我正在使用 Angular js 来显示加载屏幕。它适用于除 REST 服务之外的所有 REST 服务调用以下载文件。我明白为什么它不起作用,因为下载时我没有使用 $resource 进行任何服务调用;而不是我使用正常方法下载文件,因此 Angular js 代码对启动/完成服务请求没有任何控制权。我尝试使用 $resource 来访问这个 REST 服务,但是我从这个服务获取数据,在这种情况下加载屏幕工作正常,但不确定如何使用这些数据显示给用户以有 Angular 的方式下载。以下是必需的详细信息。请帮忙。

使用 iframe 方法的方法 1:

 /*Download file */
scope.downloadFile = function (fileId) {
//Show loading screen. (Somehow it is not working)
scope.loadingProjectFiles=true;
var fileDownloadURL = "/api/files/" + fileId + "/download";
downloadURL(fileDownloadURL);
//Hide loading screen
scope.loadingProjectFiles=false;
};

var $idown; // Keep it outside of the function, so it's initialized once.
var downloadURL = function (url) {
if ($idown) {
$idown.attr('src', url);
} else {
$idown = $('<iframe>', { id: 'idown', src: url }).hide().appendTo('body');
}
};

使用 $resource 的方法 2(不确定如何在屏幕上显示数据以进行下载)
/*Download file */
scope.downloadFile = function (fileId) {
//Show loading screen (Here loading screen works).
scope.loadingProjectFiles=true;
//File download object
var fileDownloadObj = new DownloadFile();
//Make server call to create new File
fileDownloadObj.$get({ fileid: fileid }, function (response) {
//Q? How to use the response data to display on UI as download popup
//Hide loading screen
scope.loadingProjectFiles=false;
});

};

最佳答案

这是 $resource 服务的正确模式:

scope.downloadFile = function (fileId) {
//Show loading screen (Here loading screen works).
scope.loadingProjectFiles=true;
var FileResource = $resource('/api/files/:idParam', {idParam:'@id'});
//Make server call to retrieve a file
var yourFile = FileResource.$get({ id: fileId }, function () {
//Now (inside this callback) the response data is loaded inside the yourFile variable
//I know it's an ugly pattern but that's what $resource is about...
DoSomethingWithYourFile(yourFile);
//Hide loading screen
scope.loadingProjectFiles=false;
});
};

我同意您的看法,这是一种奇怪的模式,与其他 API 不同,在其他 API 中,下载的数据被分配给回调函数中的参数,因此您会感到困惑。

注意参数的名称和大小写,看这里涉及到两个映射,一个是调用者到 $resource 对象和对象本身之间的映射,另一个是这个对象和它构造的用于下载的 url 之间的映射实际数据。

关于angularjs - 使用 $resource 下载文件和显示加载屏幕的 Angular js 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19099297/

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