From 5d5fe2a149211548f1af8f5805ca86f5a9761a2d Mon Sep 17 00:00:00 2001 From: Leszek Date: Wed, 29 Jun 2016 16:42:22 +0900 Subject: [PATCH 1/4] delete reactive property, in case it existed --- src/vuefire.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vuefire.js b/src/vuefire.js index 9ad25a93..4b9e6ae1 100644 --- a/src/vuefire.js +++ b/src/vuefire.js @@ -110,6 +110,7 @@ function bind (vm, key, source) { */ function bindAsArray (vm, key, source, cancelCallback) { var array = [] + Vue.delete(vm, key) Vue.util.defineReactive(vm, key, array) var onAdd = source.on('child_added', function (snapshot, prevKey) { From c15902a73ca40f77e973effa7cc55f0b639fe9e2 Mon Sep 17 00:00:00 2001 From: Leszek Date: Wed, 29 Jun 2016 16:42:33 +0900 Subject: [PATCH 2/4] test for issue #19 --- tests/vuefire.spec.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/vuefire.spec.js b/tests/vuefire.spec.js index 61eeacd4..75b8057a 100644 --- a/tests/vuefire.spec.js +++ b/tests/vuefire.spec.js @@ -86,6 +86,32 @@ describe('VueFire', function () { }) }) + it('bind using $bindAsArray after $unbind', function (done) { + var vm = new Vue({ + template: '
{{ item[".key"] }} {{ item.index }}
', + created: function () { + this.$bindAsArray('items', firebaseRef) + this.$unbind('items') + this.$bindAsArray('items', firebaseRef) + } + }).$mount() + firebaseRef.set({ + first: { index: 0 }, + second: { index: 1 }, + third: { index: 2 } + }, function () { + expect(vm.items).to.deep.equal([ + { '.key': 'first', index: 0 }, + { '.key': 'second', index: 1 }, + { '.key': 'third', index: 2 } + ]) + Vue.nextTick(function () { + expect(vm.$el.textContent).to.contain('first 0 second 1 third 2') + done() + }) + }) + }) + it('binds array records which are primitives', function (done) { var vm = new Vue({ firebase: { From d2c3fda5dd79110cd43033d84be886e1ec096235 Mon Sep 17 00:00:00 2001 From: Leszek Date: Wed, 29 Jun 2016 16:42:41 +0900 Subject: [PATCH 3/4] npm build --- dist/vuefire.js | 1 + dist/vuefire.min.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dist/vuefire.js b/dist/vuefire.js index 07f201f1..95a5c709 100644 --- a/dist/vuefire.js +++ b/dist/vuefire.js @@ -166,6 +166,7 @@ return /******/ (function(modules) { // webpackBootstrap */ function bindAsArray (vm, key, source, cancelCallback) { var array = [] + Vue.delete(vm, key) Vue.util.defineReactive(vm, key, array) var onAdd = source.on('child_added', function (snapshot, prevKey) { diff --git a/dist/vuefire.min.js b/dist/vuefire.min.js index f4174c0c..9c3da6f8 100644 --- a/dist/vuefire.min.js +++ b/dist/vuefire.min.js @@ -1 +1 @@ -!function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i():"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports.VueFire=i():e.VueFire=i()}(this,function(){return function(e){function i(r){if(n[r])return n[r].exports;var t=n[r]={exports:{},id:r,loaded:!1};return e[r].call(t.exports,t,t.exports,i),t.loaded=!0,t.exports}var n={};return i.m=e,i.c=n,i.p="",i(0)}([function(e,i){function n(e){return"function"==typeof e.key?e.key():e.key}function r(e){return"function"==typeof e.ref?e=e.ref():"object"==typeof e.ref&&(e=e.ref),e}function t(e){return"[object Object]"===Object.prototype.toString.call(e)}function o(e){var i=e.val(),r=t(i)?i:{".value":i};return r[".key"]=n(e),r}function s(e,i){for(var n=0;n Date: Thu, 14 Jul 2016 09:54:35 +0900 Subject: [PATCH 4/4] build --- dist/vuefire.min.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/dist/vuefire.min.js b/dist/vuefire.min.js index de426051..0cc1e5e4 100644 --- a/dist/vuefire.min.js +++ b/dist/vuefire.min.js @@ -1,5 +1 @@ -<<<<<<< HEAD -!function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i():"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports.VueFire=i():e.VueFire=i()}(this,function(){return function(e){function i(r){if(n[r])return n[r].exports;var t=n[r]={exports:{},id:r,loaded:!1};return e[r].call(t.exports,t,t.exports,i),t.loaded=!0,t.exports}var n={};return i.m=e,i.c=n,i.p="",i(0)}([function(e,i){function n(e){return"function"==typeof e.key?e.key():e.key}function r(e){return"function"==typeof e.ref?e=e.ref():"object"==typeof e.ref&&(e=e.ref),e}function t(e){return"[object Object]"===Object.prototype.toString.call(e)}function o(e){var i=e.val(),r=t(i)?i:{".value":i};return r[".key"]=n(e),r}function s(e,i){for(var n=0;n>>>>>> vuejs/master +!function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i():"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports.VueFire=i():e.VueFire=i()}(this,function(){return function(e){function i(n){if(r[n])return r[n].exports;var t=r[n]={exports:{},id:n,loaded:!1};return e[n].call(t.exports,t,t.exports,i),t.loaded=!0,t.exports}var r={};return i.m=e,i.c=r,i.p="",i(0)}([function(e,i){function r(e){return"function"==typeof e.key?e.key():e.key}function n(e){return"function"==typeof e.ref?e=e.ref():"object"==typeof e.ref&&(e=e.ref),e}function t(e){return"[object Object]"===Object.prototype.toString.call(e)}function o(e){var i=e.val(),n=t(i)?i:{".value":i};return n[".key"]=r(e),n}function s(e,i){for(var r=0;r