gpt4 book ai didi

javascript - 在 Factory 中设置局部变量作为 Ajax 调用的结果

转载 作者:行者123 更新时间:2023-11-28 01:07:51 24 4
gpt4 key购买 nike

我正在尝试创建一个工厂,将 AJAX 调用的结果存储在变量中。到目前为止,我有一些类似的事情:

angular.module('frontApp')
.factory('myFactory', function(Restangular) {
var myFactory = function() {
this.loadedData = [];
loadData()
}

var loadData = function() {
Restangular.all('endPoint').customGET('path/run').then(
function(success) {
this.loadedData = success.results;
}
);
}

return stoppingPatternFactory;
});

但我收到错误:无法设置未定义的属性“loadedData”

我知道此上下文中的 this 关键字指的是函数上下文,这就是我收到错误的原因。问题是,当 Restangular 调用是异步时,我无法理解如何在第一个函数中设置 this.loadedData 。我尝试在第一个函数中发出请求并尝试在回调中设置变量,但我得到了相同的错误。

编辑:我可能应该补充一点,我正在尝试创建该工厂的多个实例,例如var f = new myFactory(),以便指令的每个实例都有与其关联的自己的工厂。

最佳答案

你需要在then回调中设置loadedData

angular.module('frontApp')
.factory('myFactory', function(Restangular) {

var myFactory = function() {
var self = this;
self.loadedData = [];
loadData().then(function(data){
self.loadedData = data;
})
}

var loadData = function() {
var restApi = Restangular.all('endPoint')
return restApi.customGET('path/run').then(
function(success) {
return success.results;
}
);
}

return stoppingPatternFactory;
});

关于javascript - 在 Factory 中设置局部变量作为 Ajax 调用的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856734/

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