2
我在工廠內有一個用戶變量,在切換控制器後不斷變得不確定。我在一個控制器中設置變量。當我登錄用戶它出現與我期待的數據,但是當我切換控制器和檢索變量它再次未定義。下面是代碼:AngularJS工廠變量不確定
discussionBoard.factory('userFactory', function($http){
console.log("I'm loading the userFactory");
var user = {};
var factory = {};
factory.createUser = function(user, callback){
$http.post('/users/new', {user: user})
.success(function(response){
user = response[0];
callback(user);
})
}
factory.retrieveUser = function(callback){
callback(user);
}
console.log(user);
return factory;
});
discussionBoard.controller('dashCtrl', function($scope, topicFactory, userFactory){
$scope.createTopic = function(){
topicFactory.createTopic(function(topic){
$scope.topic = topic;
})
}
userFactory.retrieveUser(function(user){
$scope.user = user;
});
});
編輯:經過更多的實驗,我能得到這個通過增加用戶的工廠對象中的對象的工作。然而,這實際上引發了另一個問題,但是,工廠如何與AJAX進行交互,就像.success()無法訪問工廠的範圍。下面是工作的代碼,但我很好奇,如果任何人都可以說,這是爲什麼以這種方式設置:由同名給予的createUser函數中的參數
discussionBoard.factory('userFactory', function($http){
var factory = {};
factory.createUser = function(user, callback){
$http.post('/users/new', {user: user})
.success(function(response){
factory.user = response[0];
callback(factory.user);
})
}
factory.user = {};
factory.retrieveUser = function(callback){
callback(factory.user);
}
return factory;
});
discussionBoard.controller('dashCtrl', function($scope, topicFactory, userFactory){
$scope.createTopic = function(){
topicFactory.createTopic(function(topic){
$scope.topic = topic;
})
}
userFactory.retrieveUser(function(user){
$scope.user = user;
});
});
創建一個單例服務。這裏是鏈接(描述4種不同的方式在AngularJS中創建單例):http://blog.jdriven.com/2013/03/how-to-create-singleton-angularjs-services-in-4-different-ways/ – Tomislav