我試圖創建一個將AJAX調用的結果存儲在變量中的工廠。到目前爲止,我有東西沿着這些路線:在工廠中設置局部變量作爲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()
,這樣每個指令的實例都有自己的工廠與之相關聯。
使用「這個」在工廠被錯誤使用。檢查這篇文章的正確使用:http://stackoverflow.com/questions/14324451/angular-service-vs-angular-factory/24442224#24442224 – pixelbits
嗯 - 我只是簡單地看着這個,但它似乎是他們設置全球Factory的所有實例都可以使用的變量,我需要只對每個實例可用的變量。 – samturner
工廠和服務單身 - 他們是全球性的。但是你可以實現一個getInstance(),每次調用它時都會返回一個新的對象。 – pixelbits