Javascript 创建异步调用dropboxjs

Javascript 创建异步调用dropboxjs,javascript,angularjs,asynchronous,dropbox-api,Javascript,Angularjs,Asynchronous,Dropbox Api,当我想从Dropbox API Dropbox.js中读取目录时,我遇到了问题 API中的readdirectories函数看起来像这样,我想用angular赋值,以便在HTML中轻松访问它 在有帮助的问题后更新 client.readdir("/", function(error, entries, stat1, stat2) { if (error) { return showError(error); }

当我想从Dropbox API Dropbox.js中读取目录时,我遇到了问题

API中的readdirectories函数看起来像这样,我想用angular赋值,以便在HTML中轻松访问它

在有帮助的问题后更新

client.readdir("/", function(error, entries, stat1, stat2) {
            if (error) {
               return showError(error);
            }

            $scope.dbItems = stat1;
                $scope.$digest();
        });
HTML代码:

<ul ng-repeat="dbItem in dbItems">
   <li><input type="image" src="img/folder.png">{{dbItem.name}}</input></li>
</ul>

问题是client.readdir内部$scope.innerItems的console.log是正确的,外部的console.log是空的。我知道这应该通过某种承诺来解决,但我真的无法让它工作。

首先,client.readdir回调在文档中看起来像这个函数(错误、条目)。您知道$scope.$digest()的用途吗?将其置于$scope.dbItems=stat1之后@wayne client.readdir回调有两个可选参数$scope.$digest()实际上用于更新HTML,谢谢。但是现在我有更多的问题,我正在更新这个问题。
$scope.listDB = function()
    {   
        client.readdir(dirToString(), function(error, entries, stat1, stat2) {
            if (error) {
                return showError(error);  // Something went wrong.
            }

            $scope.dbItems = stat2;
            $scope.$digest();
            testTemp  = stat1._json;
            setFolders(testTemp);
            function setFolders(current)
            {
                for(var i=0,folders = current.contents;i<folders.length;i++)
                {
                    if(folders[i].is_dir)
                    {
                        folders[i].name = folders[i].path.replace(/\/([^)]+)\//,"");
                        folders[i].name = folders[i].name.replace('/',"");
                        $scope.listDBinner(folders[i].name);
                        var inner = $scope.innerItems;
                        folders[i].contents = inner;
                        setFolders(folders[i]);
                    }
                }
            }
        });
    };
    $scope.listDBinner = function(name)
        {   
            client.readdir(name, function(error, entries, stat1, stat2) {
                if (error) {
                    return showError(error);  // Something went wrong.
                }
                $scope.innerItems = stat1;
                $scope.$digest();
                            console.log($scope.innerItems);
            });
            console.log($scope.innerItems);
        };