2017-09-06 60 views
0

我正在寻找使img标签可选。我的意思是,如果选择或取消选择照片,则获得布尔值true/false。有任何想法吗?Vue js图像可选

<h2 class="headline mb-2 text-xs-center">Choose your hero:</h2> 
<v-layout row wrap primary-title v-for="hero in heroes" :key="hero.id"> 
    <v-flex xs6> 
    <v-avatar size="80px" class="grey lighten-1"> 
     <img v-bind:src="`${hero.href}`" alt="avatar"> 
    </v-avatar> 
    </v-flex> 
    <v-flex xs6 class="text-xs-right"> 
    <v-subheader>{{hero.name}}€</v-subheader> 
    </v-flex> 
</v-layout> 
</v-card> 
</template> 

<script> 
    export default { 

     data:() => ({ 

      bases: [{ 
       id: 1, 
       name: "Spiderman", 
       href: "../../static/spiderman.jpg" 
      }, { 
       id: 2, 
       name: "Batman", 
       href: "../../static/batman.jpg" 
      }] 
     }) 
    } 
</script> 
+0

待办事项你希望图像像一个收音机组一样,whe只有一个可以随时选择? –

+0

罗伊,你好,就是这样。选择一个应该是可能的,而不是同时选择两个。是的,就像一个单选按钮。 – user8548238

回答

0

这是一个简单的例子,你可以把它可选择

<script> 
    export default { 
     data(){ 
      return { 
       //... 
      } 
     }, 
     methods: { 
      selectHero(hero){ 
       this.$set(hero, 'selected', (hero.selected ? false:true)) //!hero.selected 
      } 
     } 
    } 
</script> 

模板

<img :src="hero.href" alt="avatar" :class="{selected: hero.selected}" @click="selectHero(hero)"> 

,如果你想选择只有一个项目

<script> 
    export default { 
     data(){ 
      return { 
       //... 
       selectedHero: {} 
      } 
     }, 
     methods: { 
      getSelectedHero(){ 
       return this.selectedHero; 
      } 
     } 
    } 
</script> 

<img :src="hero.href" alt="avatar" :class="{selected: selectedHero.id == hero.id}" @click="selectedHero = hero"> 

<style> 
    img.selected{ 
     border: solid 2px green; 
     /* and other styles ... */ 
    } 
</style> 
+0

好的,谢谢Damon的回答,应该像你说的那样,只需选择一个项目,而不是两个同时进行,就像一个单选按钮的行为。我只是了解你的代码,但我无法看到任何图像选择,代码看起来执行没有任何错误,但我无法检测图像如何被选择... – user8548238

+0

看到更新。 @ user8548238 – talkhabi

+0

是的,就是这样! :) – user8548238