Ich schrieb das folgende Werk:AngularJS Fabriken - Zugang private Variablen von Methoden
.factory('UserFact', function() {
var user = [];
return {
'setUser': function(user) {
this.user = user;
console.log('(1) User set: ' + this.user);
console.log('(2) User id is now: ' + this.user.uid);
},
'updateSport': function(sportid) {
console.log('(3)Update sport ' + sportid + 'for user id ' + this.user.uid);
}
}
es die folgende Art und Weise in meinem Controller verwenden:
function ($scope, $stateParams, DatabaseFact, UserFact) {
// variables
$scope.sports = [];
$scope.sports = DatabaseFact.getSports();
// functions
$scope.updateSport = UserFact.updateSport;
// execution
UserFact.setUser({uid: '123456', name: 'forrest'});
}
und löst es aus meiner Sicht durch eine Liste von Auslöserknopf:
Mein Problem ist, dass Konsolenprotokolle Folgendes drucken:
(1) User set: [Object] Object
(2) User id is now: 123456
(3) Update sport 1 for user id undefined
Wissen Sie, warum meine Benutzer-ID in Protokoll 3 nicht definiert ist?
Dank
Ich komme aus C++ und Java. Ich habe wirklich Schwierigkeiten mit Scopes in Javascript, die viel schwieriger zu verstehen in JS ... –