2016-08-03 6 views
5

काम नहीं करने के लिए मुझे परिवर्तनीय rasters_previews_list को जांचने की आवश्यकता है।परिवर्तनीय परिवर्तन के लिए देखें

var userContent = Vue.extend({ 
    template: '<p>Some template</p>', 
    data: function() { 
    return { 
     rasters_previews_list: [] 
    } 
    }, 
    watch: { 
    'rasters_previews_list': function(value, mutation) { 
     console.log("Value changed");  
    } 
    } 
}); 

लेकिन कंसोल में मैं Value changed नहीं दिख रहा है, जब यह नया डेटा मिला: यहाँ मेरी कोड है।

डाटा बदलते समारोह:

map.on('draw:created', function (e) { 
//... 

    Vue.http.post('/dbdata', DataBody).then((response) => { 
     userContent.rasters_previews_list = response; // putting JSON answer to Component data in userContent 

     console.log(response); 


     }, (response) => { 
      console.log("Can't get list rasters metadata from DB. Server error: ", response.status) 
     }); 

मैं map.on('draw:created', function (e) (पत्रक जे एस) का मान बदलें। मैं console.log आउटपुट देखता हूं, ऐसा लगता है कि डेटा बदल रहा है।

+0

में बताया गया है आपको अपना कोड – gurghet

+0

@gurghet में मूल्य बदल रहे हैं मैं बाहर –

+0

से डेटा को बदलने के लिए आप के साथ सफलता मिली है उत्तर दिया गया? – gurghet

उत्तर

4

यदि आप किसी सरणी के मान को बदलना चाहते हैं तो आपको विशेष ऐरे एक्सटेंशन विधियों Vue.set और Vue.delete का उपयोग करना होगा।

Due to limitations of JavaScript, Vue cannot detect the following changes to an Array:

  • When you directly set an item with the index, e.g. vm.items[0] = {} ;

  • When you modify the length of the Array, e.g. vm.items.length = 0 .

https://vuejs.org/api/#Vue-set

यह समस्या भी common gotchas

When you modify an Array by directly setting an index (e.g. arr[0] = val) or modifying its length property. Similarly, Vue.js cannot pickup these changes. Always modify arrays by using an Array instance method, or replacing it entirely. Vue provides a convenience method arr.$set(index, value) which is just syntax sugar for arr.splice(index, 1, value).

+0

डेटा में 'Vue.extend' के अंदर' set' जोड़ने के लिए कैसे? –

+0

मैं आपको दस्तावेज़ीकरण को ध्यान से पढ़ने के लिए सुझाव देता हूं क्योंकि यह स्पष्ट रूप से समझाया गया है। वैसे भी आप 'Vue.extend' के अंदर 'सेट' का उपयोग नहीं करते हैं, तो आप सरणी को बदलने के लिए 'set' का उपयोग करते हैं। आपके द्वारा पोस्ट किए गए कोड में आप सरणी नहीं बदल रहे हैं। कृपया दिखाएं कि आप सरणी को कहां बदल रहे हैं। – gurghet

+0

क्या मैं ऐसा कर सकता हूं: 'userContent। $ Set (' rasters_previews_list ', प्रतिक्रिया); '? यहां वह हिस्सा है जहां मूल्य बदल रहा है। संपत्ति पढ़ा नहीं जा सकता undefined' मैं बदल रहा हूँ सरणी के स्ट्रिंग में '$ सेट' ': मैं त्रुटि हो रही है' userContent.rasters_previews_list = प्रतिक्रिया; '' –

संबंधित मुद्दे