Vue - Snippets: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 52: Zeile 52:
 
== Events ==
 
== Events ==
 
=== v-on ===
 
=== v-on ===
 +
=== Beispiel ===
 +
<syntaxhighlight lang="javascript">
 +
const app = Vue.createApp({
 +
  data() {
 +
    return {
 +
      counter: 0,
 +
    };
 +
  },
 +
  methods:{
 +
    plus(){this.counter++},
 +
    minus(){this.counter--}
 +
  }
 +
});
 +
 +
app.mount('#events');
 +
</syntaxhighlight>
 +
<syntaxhighlight lang="html5">
 +
<section id="events">
 +
      <h2>Events in Action</h2>
 +
      <button v-on:click="counter++">Add</button>
 +
      <button v-on:click="minus()">Remove</button>
 +
      <p>Result: {{ counter }}</p>
 +
    </section>
 +
</syntaxhighlight>

Version vom 16. Dezember 2020, 23:52 Uhr

Basics

  • Data Option / Function
  • Methods Option / Object
  • Outputting Data mit
    • Interpolation {{}}
    • Bindings v-bind:property="myVal"
    • Methods
    • JavaScript Objects
  • this
// create App
const app = Vue.createApp();
// mount a html region
// app.mount('cssSelector');
app.mount('#myId'); // Vue controls now this id in the DOM


const app = Vue.createApp({
  // DATA FUNCTION can hold key val pairs
  data() { //or data: function(){...}
    return{ // data always returns an object
      myVar: 'Learn Vue',// can store keys with vals of every type(bool, object, string...)
      myVar2: 'Master Vue<, 
      myHTML: '<h3>HTML Code</h3>', // use v-html to output html code
      myLink: 'https://viewjs.org'
    }; 
  }
  // METHODS OBJECT HOLDS FUNCTIONS
  methods: {
    outputGoal(){
      const randomNumber = Math.random();
      if (randomNumber < 0.5) {return 'Learn Vue';}
      else {return this.myVar2} // 'this' works because vue merges all data and methods in a global vue object
    }
  }
});
<div id="myId">
<h3>Interpolation</h3>
<p>{{ myVar }}</p> <!-- Interpolation outputs "Learn Vue" -->
<h3>Binding</h3>
<p>Use bindings to set attributes. I.e. set the href attribute. {{myLink}} wouldn't work inside of tags.</p>
<p>Learn more <a v-bind:href="myLink">about Vue</a></p>
<p>{{ outputGoal() }}</p><!-- functions or simple js expresseions like 1+1 work to -->
<p v-html="myHTML"></p>
</div>

Events

v-on

Beispiel

const app = Vue.createApp({
  data() {
    return {
      counter: 0,
    };
  },
  methods:{
    plus(){this.counter++},
    minus(){this.counter--}
  }
});

app.mount('#events');
<section id="events">
      <h2>Events in Action</h2>
      <button v-on:click="counter++">Add</button>
      <button v-on:click="minus()">Remove</button>
      <p>Result: {{ counter }}</p>
    </section>