无法从HTML访问范围变量

时间:2016-04-11 21:54:29

标签: javascript html angularjs angularjs-scope

我正在尝试检索远程服务器上的文件列表并将其显示在网页上。 范围变量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;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

由于您的RdaService.getListOfFilesonCTP会返回一个承诺,因此您需要更新$scope内的then变量,因为您可以在此处获取承诺的已解析值。如果您尝试在其他位置设置$scope变量,则无法保证服务尚未返回值,这就是您以前的代码无效的原因。

供参考:https://docs.angularjs.org/api/ng/service/$q#the-promise-api