Mdk
Mdk

Reputation: 512

Extending $firebaseArray with an extended $firebaseObject

Trying to cut down code repetition, I've set up a $firebaseArray extension as follows:

var listUsersFactory = $firebaseArray.$extend({
    $$added: function (snap) {
        return new Customer(snap);
    },
    $$updated: function (snap) {
        var c = this.$getRecord(snap.key);
        var updated = c.updated(snap);

        return updated;
    },
});

and the Customer code:

function Customer(snap) {
    this.$id = snap.key;
    this.updated(snap);
}
Customer.prototype = {
    updated: function(snap) {
        var oldData = angular.extend({}, this.data);

        this.data = snap.val();
        // checks and such
    }
}

This works wonders when loading, showing and saving a list of customers, and I'm satisfied with it.

Now, the problem lies in retrieving a single customer and its detail page, because the Customer object isn't an extension of $fireObject and is therefore lacking a $save method

Single customer loading:

customersRef.once("value", function(snapshot) {
    if(snapshot.child(uuid).exists())
    {
        customersFactory.customerDetails = new Customer(snapshot.child(uuid));
        return deferred.resolve();
    }
}

but when I call customersFactory.customerDetails.$save() I get an error

How can I extend my class so that it works for both array and single object uses?

Upvotes: 2

Views: 145

Answers (1)

Mdk
Mdk

Reputation: 512

I couldn't find a way to do this, so I ended up using the $firebaseArray and getting single records off that to pass as details, in case anyone's wondering

Upvotes: 0

Related Questions