Javascript 如何访问从同一控制器中服务块外部的api接收的数据
我使用的是Angular 1.7.8,我有一个控制器,它调用从API接收数据的服务,问题是,我无法访问同一控制器中服务块之外的数据Javascript 如何访问从同一控制器中服务块外部的api接收的数据,javascript,angularjs,rest,Javascript,Angularjs,Rest,我使用的是Angular 1.7.8,我有一个控制器,它调用从API接收数据的服务,问题是,我无法访问同一控制器中服务块之外的数据 app.controller('AppController', function ($scope, DataService) { let fieldProperties = {}; $scope.findInData = function (value) { DataService.getData().then(function
app.controller('AppController', function ($scope, DataService) {
let fieldProperties = {};
$scope.findInData = function (value) {
DataService.getData().then(function (response) {
$scope.result = response.data;
if (response.data !== undefined) {
for (let idx in $scope.result) {
if ($scope.result.hasOwnProperty(idx)) {
if (value === $scope.result[idx].fieldname) {
fieldProperties = {
'fieldName': $scope.result[idx].fieldname,
'preferredFieldName': $scope.result[idx].preferredfieldname,
'fieldValue': $scope.result[idx].fieldvalue,
'isEditable': $scope.result[idx].editable,
'isMandatory': $scope.result[idx].mandatory,
'isAutoClear': $scope.result[idx].autoclear
};
}
}
}
}
});
};
$scope.resultFieldProperties = fieldProperties;
});
另外,我想指出的是,将$scope直接放在fieldProperties上对我来说不是一个解决方案,因为我需要将此结果发送到指令范围,fieldProperties对象以及范围在服务块之外是未定义的,请提供任何其他建议 您可以通过调用函数将结果返回给变量
$scope.findInData = function (value) {
DataService.getData().then(function (response) {
$scope.result = response.data;
if (response.data !== undefined) {
for (let idx in $scope.result) {
if ($scope.result.hasOwnProperty(idx)) {
if (value === $scope.result[idx].fieldname) {
fieldProperties = {
'fieldName': $scope.result[idx].fieldname,
'preferredFieldName': $scope.result[idx].preferredfieldname,
'fieldValue': $scope.result[idx].fieldvalue,
'isEditable': $scope.result[idx].editable,
'isMandatory': $scope.result[idx].mandatory,
'isAutoClear': $scope.result[idx].autoclear
};
return fieldProperties;
}
}
}
}
});
};
$scope.resultFieldProperties = $scope.findInData('<some_value>');
$scope.findInData=函数(值){
DataService.getData().then(函数(响应){
$scope.result=response.data;
if(response.data!==未定义){
for(让idx在$scope.result中){
if($scope.result.hasOwnProperty(idx)){
如果(值==$scope.result[idx].fieldname){
字段属性={
“fieldName”:$scope.result[idx].fieldName,
“preferredFieldName”:$scope.result[idx]。preferredFieldName,
“fieldValue”:$scope.result[idx].fieldValue,
“isEditable”:$scope.result[idx]。可编辑,
“isMandatory”:$scope.result[idx]。必填,
'isAutoClear':$scope.result[idx].autoclear
};
返回字段属性;
}
}
}
}
});
};
$scope.resultFieldProperties=$scope.findInData(“”);
否则,您需要有一个回调函数作为参数,它可以在完成时将数据返回给您。您可以通过调用该函数将结果返回给变量
$scope.findInData = function (value) {
DataService.getData().then(function (response) {
$scope.result = response.data;
if (response.data !== undefined) {
for (let idx in $scope.result) {
if ($scope.result.hasOwnProperty(idx)) {
if (value === $scope.result[idx].fieldname) {
fieldProperties = {
'fieldName': $scope.result[idx].fieldname,
'preferredFieldName': $scope.result[idx].preferredfieldname,
'fieldValue': $scope.result[idx].fieldvalue,
'isEditable': $scope.result[idx].editable,
'isMandatory': $scope.result[idx].mandatory,
'isAutoClear': $scope.result[idx].autoclear
};
return fieldProperties;
}
}
}
}
});
};
$scope.resultFieldProperties = $scope.findInData('<some_value>');
$scope.findInData=函数(值){
DataService.getData().then(函数(响应){
$scope.result=response.data;
if(response.data!==未定义){
for(让idx在$scope.result中){
if($scope.result.hasOwnProperty(idx)){
如果(值==$scope.result[idx].fieldname){
字段属性={
“fieldName”:$scope.result[idx].fieldName,
“preferredFieldName”:$scope.result[idx]。preferredFieldName,
“fieldValue”:$scope.result[idx].fieldValue,
“isEditable”:$scope.result[idx]。可编辑,
“isMandatory”:$scope.result[idx]。必填,
'isAutoClear':$scope.result[idx].autoclear
};
返回字段属性;
}
}
}
}
});
};
$scope.resultFieldProperties=$scope.findInData(“”);
否则,您需要一个回调函数作为参数,它可以在完成时将数据返回给您。您可以将数据存储在变量中。像这样
$scope.storedresult=$scope.findInData('value');
您可以访问整个控制器中的storedresult。您可以将数据存储在变量中。像这样
$scope.storedresult=$scope.findInData('value');
您可以访问整个控制器中的storedresult。不确定我是否理解正确,但如果您将
$scope.resultFieldProperties={'fieldName':$scope.result[idx].fieldName,…}
放入其中,它是否适用于您?因为resultFieldProperties
始终是未定义的,因为getData()
是异步的,需要时间才能完成。我不确定我是否理解正确,但是如果您将$scope.resultFieldProperties={'fieldName':$scope.result[idx].fieldName,}
放在中,它会与您一起工作吗?因为resultFieldProperties
始终是未定义的,因为getData()
是异步的,需要时间才能完成