实现Vue.js组件,以便将元素定义为

发布时间:2020-07-07 17:33
<labeledinput id="username">Username: </labeledinput>

将呈现为:

<div><label for="username">Username: </label><input type="text" id="username"></div>

  <div id="app">
    <labeledinput id="username">Username: </labeledinput>
  </div>
  <script>  
    var vm = new Vue({
      el: '#app'
    });
    
    // Example case
    console.log(document.getElementById("app").innerHTML);
  </script>

我知道这是一个非常愚蠢的问题。但我不了解Vue.js的概念 谢谢,

回答1

创建组件更简单的方法是:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <div>
        <label-input v-model="username">
          <span>Username</span>
        </label-input>
        <span>Username is {{ username }}</span>
      </div>
    </div>
    <script>
      Vue.component('label-input', {
        props: ['value'],
        template: `
          <div>
            <label>
              <slot></slot>
              <input type="text" :value="value" @input="$emit('input', $event.target.value)" />
            </label>
          </div>`,
      });

      new Vue({
        el: '#app',
        data() {
          return {
            username: '',
          };
        },
      });
    </script>
  </body>
</html>