@@ -49,17 +49,17 @@ function indexForKey (array, key) {
49
49
* @param {object } source
50
50
*/
51
51
function bind ( vm , key , source ) {
52
- if ( ! isObject ( source ) ) {
53
- throw new Error ( 'VueFire: invalid Firebase binding source.' )
54
- }
55
52
var asObject = false
56
53
var cancelCallback = null
57
54
// check { source, asArray, cancelCallback } syntax
58
- if ( isObject ( source . source ) ) {
55
+ if ( isObject ( source ) && source . hasOwnProperty ( ' source' ) ) {
59
56
asObject = source . asObject
60
57
cancelCallback = source . cancelCallback
61
58
source = source . source
62
59
}
60
+ if ( ! isObject ( source ) ) {
61
+ throw new Error ( 'VueFire: invalid Firebase binding source.' )
62
+ }
63
63
// get the original ref for possible queries
64
64
var ref = source
65
65
if ( typeof source . ref === 'function' ) {
@@ -128,7 +128,7 @@ function bindAsArray (vm, key, source, cancelCallback) {
128
128
function bindAsObject ( vm , key , source , cancelCallback ) {
129
129
Vue . util . defineReactive ( vm , key , { } )
130
130
var cb = source . on ( 'value' , function ( snapshot ) {
131
- vm [ key ] = snapshot . val ( )
131
+ vm [ key ] = createRecord ( snapshot )
132
132
} , cancelCallback )
133
133
vm . _firebaseListeners [ key ] = { value : cb }
134
134
}
0 commit comments