मैं अनुरोध की स्थिति को ट्रैक करने के लिए vue-resource
प्लगइन को लपेटने के लिए Vue.js में एक साधारण प्लगइन बनाने की कोशिश कर रहा हूं।Vue.js बाध्यकारी संदर्भ?
function State() {}
State.prototype.post = function (ctx, name, url, data, successCB, errorCB) {
var options = {};
if (errorCB) {
options.error = function (resp) {
ctx[name] = 'error';
return errorCB(resp);
};
}
ctx[name] = 'sending';
ctx.$http.post(url, data, function (res, code, req) {
ctx[name] = 'sent';
return successCB(res, code, req);
}, options);
};
function install(Vue) {
Object.defineProperties(Vue.prototype, {
$state: {
get: function() {
return new State;
// return Vue.state.bind({$vm: this});
}
}
});
}
module.exports = install;
आप मुझे बुला Vue से ctx
संदर्भ यह data
मूल्यों है करने के लिए पहुँच प्राप्त करने के पारित देखेंगे। मैंने vue-resource
प्लगइन के साथ देखा है कि प्लगइन बल्ले के माध्यम से इसे स्वचालित रूप से बांधने का एक तरीका है सिंटैक्स सही नहीं हो सकता है।
असल में मैं हर समय ctx
संदर्भ पास करने से बचना चाहता हूं, इसके पास पहले से ही उचित संदर्भ होना चाहिए।
संपादित
मैं में उचित संदर्भ पारित करने के लिए एक समाधान के लिए देख रहा हूँ स्पष्ट करने के लिए। ऊपर सिर्फ तरह एक उदाहरण के है और मैं राज्यों को ट्रैक करने के लिए एक समाधान के लिए नहीं देख रहा हूँ।
उदाहरण के लिए vue-resource
प्लगइन में यदि हम कोई http अनुरोध करते हैं।
this.$http.get('/some/url', {}, function() {
this.func();
console.log(this.var);
});
संदर्भ पहले से ही कॉलबैक में है। विचारों को प्राप्त करने के लिए मुझे किसी प्रकार का var _this = this
करने की आवश्यकता नहीं है। मैं अपनी प्लगइन के लिए इसे हासिल करना चाहता हूं ताकि उचित this
बस वहां हो। मैं इसे vue-resource
प्लगइन से समझने की कोशिश कर रहा हूं लेकिन सभी कोडों का पालन करने में कठिन समय है।
तो आपके पास आपके वू घटक पर 'नाम' संपत्ति है, और आप चाहते हैं कि यह प्लगइन उस मान को अपडेट करने के लिए HTTP अनुरोध प्रगति के रूप में हो? मुझे लगता है कि आपको जिम्मेदारी की एक बुरी श्रृंखला देता है। क्या आप 'स्टेटस' नामक 'स्टेटस' की संपत्ति बना सकते हैं जिसे अपडेट किया गया है? तो आप 'this। $ State.status' का उपयोग कर वर्तमान स्थिति को जान सकते हैं? फिर प्लगइन इसके उद्देश्य के लिए ज़िम्मेदार है, और घटक स्वतंत्र रहता है – Jeff