123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- var init = function(){
- var bindings = this.$options.pouchdb
- ensureRef(this)
- for(var key in bindings) {
- bind(this,key,bindings[key])
- }
- }
- function ensureRef (vm) {
- if (!vm.$pouchdbRefs) {
- vm.$pouchdbRefs = Object.create(null)
- }
- }
- function defineReactive(vm,key,val){
- if(key in vm){
- vm[key] = val
- } else {
- Vue.util.defineReactive(vm,key,val)
- }
- }
- function bind(vm,key,source){
- var array = []
- defineReactive(vm,key,array)
- vm.$pouchdbRefs[key] = source
- source.changes({
- since:'now',
- live: true,
- include_docs: true
- }).on('complete',function(info){
-
- }).on('change',function(change){
- vm[key].push(change.doc)
- }).on('err',function(err){
-
- })
- source.allDocs({
- include_docs: true,
- descending: true
- }).then(function(doc){
- var docs = doc.rows.map(function(obj){
- return obj.doc
- })
- defineReactive(vm,key,docs)
- }).catch(function(err){
- })
- }
- var PouchMixin = {
- init: init, // making it usable with vuejs 1.x.x
- beforeCreate: init
- }
- function install(Vue){
- Vue.mixin(PouchMixin)
- }
- // auto install
- if (typeof window !== 'undefined' && window.Vue) {
- install(window.Vue)
- }
|