2017-05-03 11 views
6

मैं एक सरणी हैकिसी सरणी में केवल एक ऑब्जेक्ट को कैसे देखना है? ऐसा करने</p> <pre><code>basicForm.schema = [ {}, {} // I want to watch only this ] </code></pre> <p>मैंने कोशिश की:

‘basicForm.schema[1].value’: { 
    handler (schema) { 
    const plan = schema.find(field => { 
     return field.name === ‘plan’ 
    }) 
    }, 
    deep: true 
}, 

लेकिन मैं यह त्रुटि आई:

vue.js?3de6:573 [Vue warn]: Failed watching path: “basicForm.schema[1]” Watcher only accepts simple dot-delimited paths. For full control, use a function instead.

ऐसा करने का सही तरीका क्या है?

उत्तर

5

आप कर सकते हैं watch एक के बजाय computed property:

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    basicForm: { 
 
     schema: [ 
 
     \t {a: 1},{b: 2} // I want to watch only this 
 
     ] 
 
    } 
 
    }, 
 
    computed: { 
 
    bToWatch: function() { 
 
     return this.basicForm.schema[1].b 
 
    } 
 
    }, 
 
    methods: { 
 
    incB: function() { 
 
     this.basicForm.schema[1].b++ 
 
    } 
 
    }, 
 
    watch: { 
 
    bToWatch: function(newVal, oldVal) { 
 
     console.log(newVal) 
 
    } 
 
    } 
 
});
<script src="https://unpkg.com/vue/dist/vue.js"></script> 
 

 
<div id="app"> 
 
    <button @click="incB()">Inc</button> 
 
</div>

3

आप के रूप में चेतावनी संदेश से पता चलता है एक समारोह का उपयोग करना चाहिए। आपको vm.$watch के माध्यम से ऐसा करने की आवश्यकता है।

new Vue({ 
 
    el: '#app', 
 
    
 
    data: { 
 
    items: [ 
 
     { name: 'bob' }, 
 
     { name: 'fred' }, 
 
     { name: 'sue' }, 
 
    ], 
 
    }, 
 
    
 
    created() { 
 
    this.$watch(() => this.items[1].name, this.onNameChanged); 
 
    }, 
 
    
 
    methods: { 
 
    changeValue() { 
 
     this.items[1].name = 'rose'; 
 
    }, 
 
    
 
    onNameChanged(name) { 
 
     alert('name changed to ' + name); 
 
    }, 
 
    }, 
 
});
<script src="https://unpkg.com/vue/dist/vue.js"></script> 
 

 
<div id="app"> 
 
    <button @click="changeValue">Click me</button> 
 
</div>

आप शायद जांच करनी चाहिए कि this.items[1] घड़ी समारोह के अंदर उस तक पहुंचने में अन्यथा आप एक त्रुटि मिल जाएगा से पहले से मौजूद है।

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