Javascript 创建异步调用dropboxjs
当我想从Dropbox API Dropbox.js中读取目录时,我遇到了问题 API中的readdirectories函数看起来像这样,我想用angular赋值,以便在HTML中轻松访问它 在有帮助的问题后更新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); }
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);
};