gpt4 book ai didi

javascript - Angular 中的过滤和 $http promise

转载 作者:行者123 更新时间:2023-11-30 12:26:08 25 4
gpt4 key购买 nike

我在从 JSON 文件中过滤数据时遇到问题,该文件是一个包含 20 个对象的数组。

在我的工厂里我有这两个功能。

function getData() {
return $http
.get('mock.json')
.success(_handleData)
.error(_handleError);
}

function _handleData(data) {
var filteredData = _filterData(data, "name", "XYZ");

console.log('filteredData', filteredData);

return filteredData;
}

此处 console.log("filteredData") 仅显示过滤后的元素(即 20 个中的 3 个);

下一步 - 在一个服务中,我在 ng-click 上得到了这个:

var filterMe = function () {
DataFactory
.getData(_address)
.success(_handleServiceData );
}

在哪里

var _handleServiceData = function (data) {
filtered = data;
};

问题是 - 为什么 _handleServiceData 中的“数据”显示所有元素而不是之前过滤的这些元素?

编辑:here's the plunk - 结果记录在控制台中

最佳答案

因为您从 _handleData 函数返回的 filteredData 没有传递给您在 filterMe 中附加的 success 回调功能。那是因为您将回调附加到同一个 promise 上,因为 success 函数不会像 then 方法那样创建新的 promise 。因此,要解决此问题,请像这样修改您的代码:

function getData() {
return $http
.get('mock.json')
.then(_handleData, _handleError); //use "then" instead of "success"
}

然后在filterMe函数中:

var filterMe = function () {
DataFactory
.getData(_address)
.then(_handleServiceData );
}

关于javascript - Angular 中的过滤和 $http promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29330989/

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