2016-04-14 12 views
0

kann nicht mehrere Methoden zu $ ​​FirebaseObject hinzufügen Ich habe gearbeitet, meine abgeflachten Daten zu kombinieren, aber wenn ich meine $ FirebaseObject-Dienst erweitern, habe ich einige wirklich seltsame Verhalten. Ich benutze eine Fabrik, um Benutzerdaten zurückzugeben, zum Beispiel den vollen Namen, der gut funktioniert. Aber wenn ich versuche, eine zweite Methode hinzuzufügen, kann ich nicht auf diesen Befehl zugreifen.

Meine Fabrik:

// user factory 
app.factory("User", ["$firebaseObject", "$firebaseRef", 
    function($firebaseObject, $firebaseRef) { 
     // create a new service based on $firebaseObject 
     var User = $firebaseObject.$extend({ 
      // these methods exist on the prototype, so we can access the data using `this` 
      getTeamName: function() { 
       console.log("this: " + this); // Logs: this: [object Object] 
       console.log("full name: " + this.firstName + " " + this.lastName); // Logs: full name: undefined undefined 
       console.log("this.teams: " + this.teams); //Logs: this.teams: undefined 

       var teamKey = this.teams.$value; // TypeError: Cannot read property '$value' of undefined 
       console.log("teamKey: " + teamKey); 

       var teamObj = $firebaseObject($firebaseRef.teams.child(teamKey)); 
       console.log("teamObj.teamName: " + teamObj.teamName); 
      }, 
      getFullName: function() { // Runs just fine 
       return this.firstName + " " + this.lastName; 
      } 
     }); 
     return function(uid) { 
      // create an instance of User (the new operator is required) 
      return new User($firebaseRef.users.child(uid)); 
     } 
    } 
]); 

Das Merkwürdige ist, dass getFullName ganz gut funktioniert, werden alle sugjestions?

Antwort

0

Sieht aus wie getTeamName gibt nichts zurück

+0

ich keine Sache Bug Test habe zurückkehren, aber wenn ich ersetzen 'console.log ("teamObj.teamName:" + teamObj.teamName);' mit 'return teamObj.teamName' Es gibt mir die gleichen Fehler, "diese" ist immer noch nicht definiert –