我正在尝试检索远程服务器上的文件列表并将其显示在网页上。
范围变量fileListOnCTP
包含可从网页访问的文件列表。但网页不显示文件列表。但是ng-inspector显示变量保持正确的值。有人能告诉我哪里可能出错吗?
$scope.listOfFilesOnCTP = "";
$scope.fileListOnCTP = "";
$scope.GetListOfFilesonCTP = function(path){
$scope.listOfFilesOnCTP = RdaService.getListOfFilesonCTP(encodeURIComponent(path)).then(function(response){
var newData = response.data;
console.log(newData);
return newData;
});
console.log($scope.listOfFilesOnCTP); // --> Displaying the file list correctly
//path = path.replace(/\//g, '_');
$scope.fileListOnCTP = $scope.listOfFilesOnCTP;
};

<div class="col-md-3" id="CTP Jobs">
<h3>JOBS</h3>
<table class="table table-striped">
<div ng-model="fileListOnCTP" ng-init="GetListOfFilesonCTP('/home/topas/rda_app/JOBS')">
<span><tr>{{fileListOnCTP}} <!-- Variable not getting resolved although it shows correct value in controller -->
</tr></span>
</div>
</table>
</div>
&#13;
答案 0 :(得分:2)
由于您的RdaService.getListOfFilesonCTP
会返回一个承诺,因此您需要更新$scope
内的then
变量,因为您可以在此处获取承诺的已解析值。如果您尝试在其他位置设置$scope
变量,则无法保证服务尚未返回值,这就是您以前的代码无效的原因。
供参考:https://docs.angularjs.org/api/ng/service/$q#the-promise-api