【发布时间】:2014-07-21 01:56:36
【问题描述】:
我正在尝试创建一个将 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;
});
但我收到一个错误:cannot set property 'loadedData' of undefined。
我了解此上下文中的 this 关键字指的是函数上下文,这就是我收到错误的原因。问题是当 Restangular 调用是异步的时,我无法理解如何在第一个函数中设置 this.loadedData。我尝试在第一个函数中发出请求并尝试在回调中设置变量,但我得到了同样的错误。
编辑:我可能应该补充一点,我正在尝试创建这个工厂的多个实例,例如var f = new myFactory() 以便指令的每个实例都有自己的关联工厂。
【问题讨论】:
-
在工厂中使用“this”被误用。检查此帖子是否正确使用:stackoverflow.com/questions/14324451/…
-
嗯 - 我只是简单地看了看这个,但似乎他们正在为工厂设置全局变量,这些变量将可用于工厂的所有实例,我需要仅可用于每个实例的变量.
-
Factory 和 Services 是单例的——它们是全局的。但是你可以实现一个 getInstance(),每次调用它都会返回一个新对象。
标签: javascript angularjs factory