मैं पाउच/CouchDB के लिए एक Vue प्लगइन जो खुले sourced किया जाएगा पर काम कर रहा हूँ, लेकिन जब तक मैं एक मुद्दा मैं कर रहा हूँ पता लगा सकते हैं के रूप में:VueJS प्रतिक्रियाशील बाध्यकारी - कैसे करें?
वर्तमान में मैं Vuex सदृश बारीकी प्लगइन बनाने के लिए कोशिश कर रहा हूँ, जिसमें एक आंतरिक राज्य है, और परिवर्तनों का पता लगाता है, और जब वे होते हैं तो दृश्य प्रस्तुत करते हैं।
वू उदाहरण के अंदर मैं एक वस्तु शुरू कर रहा हूं, और उस वस्तु के भीतर मैं दो या तीन ऑब्जेक्ट्स को पुनः सक्रिय करने की कोशिश कर रहा हूं, परिभाषित प्रतिक्रिया के साथ, यहां तक कि यह अच्छा है।
लेकिन जब मैं उस वस्तु के अंदर कुछ मूल्यों को बदलने की कोशिश करता हूं, तो परिवर्तन दृश्य में प्रचारित नहीं होते हैं। लेकिन अगर मैं स्पष्ट रूप से पर कॉल करता हूं। $ Bucket._state.projects .__ ob __। Dep.notify(), परिवर्तन प्रचारित करते हैं।
Vue उदाहरण के मौजूदा वस्तु प्रतिनिधित्व इस तरह है: Vue { $bucket: { _state: { projects: {} } } }
$bucket._state
defineReactive
साथ प्रारंभ किया गया है। जो मुझे विश्वास है कि इसे काम करना चाहिए, लेकिन मुझे यकीन नहीं है कि इस मामले में सही समस्या क्या है।
कोई विचार?
कोड की एक आंशिक, यहाँ में वर्ग लगभग Vuex.Store({})
constructor(schema = {}) {
// Getting defineReactive from Vue
const { defineReactive } = Vue.util;
// Ignored Schema Keys
const ignoredKeys = [
'config',
'plugins'
];
// Internal Variables
this._dbs = {};
// Define Reactive Objects
defineReactive(this, '_state', {});
defineReactive(this, '_views', {});
// Local Variables
if (!schema.config) {
throw new Error(`[Pouch Bucket]: Config is not declared in the upper level!`);
}
// Init PouchDB plugins
if ((schema.plugins.constructor === Array) && (schema.plugins.length > 0)) {
for (let i = 0; i < schema.plugins.length; i++) {
PouchDB.plugin(
schema.plugins[i]
);
}
}
// Initializing DBs that are declared in the schema{}
for (const dbname in schema) {
if (schema.hasOwnProperty(dbname) && ignoredKeys.indexOf(dbname) === -1) {
this._initDB(
dbname,
Object.assign(
schema.config,
schema[dbname].config ? schema[dbname].config : {}
)
);
this._initState(dbname);
}
}
}