2017-04-20 53 views
2

当同一个模板中有两个或更多个sliders并且它们具有:drag-end="myFunc(flower)"时,事件触发每个值更改以及所有sliders。所以myFunc在所有sliders上启动。一个模板中的事件触发其他模板中的功能

<template> 
<div> 
    <div v-for="flower in flowers"> 
      <slider ref="slider" v-model="flower.value" :drag-end="myFunc(flower)"></slider> 
    </div> 

    <div v-for="tree in trees"> 
      <slider ref="slider" v-model="tree.value" :drag-end="myFunc(tree)"></slider> 
    </div> 
<div> 
</template> 
<script> 
const Slider = require('../controls/slider.vue'); 

module.exports = { 

    methods: { 
     myFunc: function (plant) { 
      console.log("Plant value", plant.value); 
     }, 
    }, 
    components: { 
     Slider 
    }, 
    mounted: function() { 

    }, 
    data() { 
     return { } 
    } 
} 
</script> 
+0

你能尝试从两个滑块删除'ref'属性? –

+0

不影响。 – stsdc

回答

1

正如我在文档看,drag-end是事件,所以后来它应该被用来作为事件:

<div v-for="flower in flowers"> 
     <slider ref="slider" v-model="flower.value" @drag-end="myFunc(flower)"></slider> 
</div> 

<div v-for="tree in trees"> 
     <slider ref="slider" v-model="tree.value" @drag-end="myFunc(tree)"></slider> 
</div> 
+0

谢谢。要在这个周末学习vue.js文档。再次。 – stsdc

+0

Welcome.Well这与'vue-slider-component'库文档有关,不直接与Vue相关。 –

0

您应该为每个滑块声明不同的函数。

<template> 
<div> 
    <div v-for="flower in flowers"> 
      <slider ref="slider" v-model="flower.value" :drag-end="funcFlower(flower)"></slider> 
    </div> 

    <div v-for="tree in trees"> 
      <slider ref="slider" v-model="tree.value" :drag-end="funcTree(tree)"></slider> 
    </div> 
<div> 
</template> 
<script> 
const Slider = require('../controls/slider.vue'); 

module.exports = { 

    methods: { 
     funcFlower: function (plant) { 
      console.log("Plant value", plant.value); 
     }, 
     funcTree: function (plant) { 
      console.log("Plant value", plant.value); 
     }, 
    }, 
    components: { 
     Slider 
    }, 
    mounted: function() { 

    }, 
    data() { 
     return { } 
    } 
} 
</script> 
+0

由于某种原因不起作用。 – stsdc

+0

为什么会这样?如果这可能是真的,那么Javascript会很糟糕,因为你必须重复自己所有的时间:)这个方法是可重用的,它接受一个参数,所以你可以在当前组件中多次使用它。 –