如何在AngularJS中使用该函数之外的变量

How can I use variable outside that function in AngularJS?

本文关键字:函数 变量 AngularJS      更新时间:2023-09-26

我在控制器中使用这个范围:

$scope.uploadPic = function (file) {
            file.upload = Upload.upload({
                url: 'http://sites.net/upload',
                data: {file: file, blobType: 'apps'},
            });
            file.upload.then(function (response) {
                $timeout(function () {
                    file.result = response.data;
                    var downloadLink = response.data.data.uploadInfo.publicDownloadUrl;
                    console.log(downloadLink);
                });
            }, function (response) {
                if (response.status > 0)
                    $scope.errorMsg = response.status + ': ' + response.data;
            }, function (evt, response) {
                // Math.min is to fix IE which reports 200% sometimes
                file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
            });
        }

是的,它有效,我需要这个:

var downloadLink = response.data.data.uploadInfo.publicDownloadUrl;
console.log(downloadLink);

好的,但现在,我必须在另一个函数中使用这个var。我该怎么做?谢谢

您可以在函数外声明变量:

var downloadLink;
$scope.uploadPic = function (file) {
    // ..
    file.upload.then(function (response) {
        $timeout(function () {
            file.result = response.data;
            downloadLink = response.data.data.uploadInfo.publicDownloadUrl;
            // or, if you want to use it in your view:
            // $scope.downloadLink = downloadLink;
            console.log(downloadLink);
        });
    }, function (response) {
    // ..
}
function doSomethingWithLink() {
    var link = downloadLink;
    // do something with link
}

一个解决方案是document.variable

内部函数示例:

 document.downloadLink = response.data.data.uploadInfo.publicDownloadUrl;

外部功能示例:

document.downloadLink=  response.data.data.uploadInfo.publicDownloadUrl;

您可以像一样在$scope中绑定它

$scope.downloadLink = response.data.data.uploadInfo.publicDownloadUrl;

因此它可以在文件中全局使用,也可以在模板上全局使用。

您可以在函数外声明它以全局使用