Я developping веб-приложение с ионными 1 и AngularJS 1.AngularJS - Обновить переменную завода из контроллера
В моей фабрике (UserFact):
.factory('UserFact', function() {
var user = [];
return {
'setUser': function(user) {
this.user = user;
console.log('(2) User set: ' + this.user);
console.log('(3) User id is now: ' + this.user.uid);
},
'updateSport': function(sportid, registered) {
console.log('Update sport: ' + sportid + ' --> ' + registered);
console.log('(4) For user uid: ' + this.user.uid);
var ref = firebase.database().ref('users/' + this.user.uid + '/sports/');
// sync down from server
var list = [];
ref.on('value', function(snap) { list = snap.val(); });
if(registered) {
list.splice(0, 0, {id: sportid});
} else {
}
ref.set(list);
}
};
})
В мой контроллер:
function ($scope, $stateParams, $state, DatabaseFact, UserFact) {
// variables
$scope.sports = [];
$scope.sports = DatabaseFact.getSports();
// functions
$scope.updateSport = UserFact.updateSport;
// execution
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
UserFact.setUser(user);
console.log('(1) Ctrl user uid: ' + user.uid);
}
});
}
Согласно консоли: журналы (1), (2) и (3) отобразить идентификатор формирует мою БД, но (4) всегда неопределенные ...
Любая идея?
Благодаря
Я думаю, что получаю вашу точку: сохранение пользователя в области $ scope и передача его из шаблона в контроллер. Но более глобально я видел фабрики как классы (я больше привык к C++ и Java), так что в чем смысл наличия переменных на заводе, если я не могу получить доступ к ним из-за функции этой же фабрики? Благодаря! –
ответить выше выше – GPicazo
Thanks GPicazo для уточнения. Я не понимаю, почему, но мой код все еще не работает. Я не очень хорошо знаком с этими понятиями Factory/Service, но не мог это быть, потому что в то время, когда я создаю экземпляр фабрики, пользовательский член пуст, тогда моя функция возвращается с этим неопределенным значением для пользователя I, который никогда не обновляется, затем ... –