gpt4 book ai didi

javascript - 如何访问从同一 Controller 中服务 block 外部的 api 接收的数据

转载 作者:行者123 更新时间:2023-12-01 00:35:32 25 4
gpt4 key购买 nike

<小时/>

我正在使用 Angular 1.7.8,并且我有一个 Controller 调用从 API 接收数据的服务,问题是,我无法访问同一 Controller 中服务 block 之外的数据。

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 对象作为范围在服务 block 之外也是未定义的,任何其他建议请!?

最佳答案

您可以通过调用函数将结果返回到变量

$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>');

否则,您需要一个回调函数作为参数,并且可以在完成时将数据返回给您。

关于javascript - 如何访问从同一 Controller 中服务 block 外部的 api 接收的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58158778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com