• vue.js 组件引用之初级 之二


    1. template 标签也可以实现替换,这样可以省去script标签了

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <script src="./vue/vue.js"></script>
     8     <title>Document</title>
     9 </head>
    10 <body>
    11     <div class="box" id="box">
    12         <aaa class="a"></aaa>
    13         <bbb class="b"></bbb>
    14     </div>
    15     <template class="a" id="a">
    16         <h3>这是一个有意思的设计aaa</h3>
    17         <h3>这是一个有意思的设计aaa</h3>
    18     </template>
    19     <template class="b" id="b">
    20         <h3>这是哪里的地球呢bbb</h3>
    21         <h3>这是哪里的地球呢bbb</h3>
    22     </template>
    23 
    24     <script>
    25         new Vue({
    26             el: "#box",
    27             components: {
    28                 'aaa': {
    29                     template: '#a'
    30                 },
    31                 'bbb': {
    32                     template: '#b'
    33                 }
    34             }
    35         });
    36     </script>
    37 </body>
    38 </html>

    运行结果:

    2.1  子组件引用父组件的数据

     1 <body>
     2     <div class="box" id="box">
     3         <aaa class="a"> </aaa>
     4         <input type="text" value="nihao">
     5     </div>
     6     <template class="a" id="a">
     7        <input type="text" :value="uName"><br>
     8        <input type="text" :value="uAge"><br>
     9     </template>
    10     <script>
    11         new Vue({
    12             el: "#box",
    13             data: {
    14                 uName: "huanying2015",
    15                 uAge: 25
    16             },
    17             components: {
    18                 'aaa': {
    19                     template: "#a"
    20                 }
    21             }
    22         });
    23     </script>

    运行结果:

    2.2 子组件引用父组件的数据(引用成功): 父组件的数据是user-name ,子组件对应的是userName (驼峰式命名)

     1 <body>
     2     <div class="box" id="box">
     3         <aaa class="a" :user-name="uName" :user-age="uAge"></aaa>
     4     </div>
     5     <template class="a" id="a">
     6         <input type="text"  :value="userName" ><br>
     7         <input type="text"  :value="userAge"><br>
     8     </template>
     9     <script>
    10         new Vue({
    11             el: "#box",
    12             data: {
    13                 uName: 'huanying2015',
    14                 uAge: 25
    15             },
    16             components: {
    17                 aaa: {
    18                     template: '#a',
    19                     props: ['userName', 'userAge']
    20                 }
    21 
    22             }
    23         });
    24     </script>
    25 </body>

    运行结果:

    3. 子组件引用父组件的数据,子组件和父组件的对应连接名相同,都使用小写字符串

     1 <body>
     2     <div class="box" id="box">
     3         <aaa class="a" :username="uName" :userage="uAge"></aaa>
     4     </div>
     5     <template id="a">
     6         <input type="text" class="ss" :value="username"> <br>
     7         <input type="text" class="ss" :value="userage">
     8     </template>
     9     <script>
    10         new Vue({
    11             el: "#box",
    12             data: {
    13                 uName: 'huanying2015',
    14                 uAge: 25
    15             },
    16             components: {
    17                 aaa: {
    18                     template: '#a',
    19                     props: ['username', 'userage']
    20                 }
    21             }
    22         });
    23     </script>
    24 </body>

    运行结果:

    4. 子组件引用父组件的数据,默认不会改变父组件的数据,而父组件的数据变化时,子组件的数据也跟着变化

     1 <body>
     2     <div class="box" id="box">
     3         <h3>父组件</h3>
     4         <input type="text" v-model="uName">
     5         <input type="text" v-model="uAge">
     6         <aaa class="a" :username="uName" :userage="uAge"></aaa>
     7     </div>
     8     <template class="a" id="a">
     9         <h3>子组件</h3>
    10         <input type="text" v-model="username" >
    11         <input type="text" v-model="userage" >
    12     </template>
    13     <script>
    14         new Vue({
    15             el: "#box",
    16             data: {
    17                 uName: 'huanying2015',
    18                 uAge: 25
    19             },
    20             components: {
    21                 aaa: {
    22                     template: '#a',
    23                     props: ['username', 'userage']
    24                 }
    25             }
    26         });
    27     </script>
    28 </body>

    运行结果:

    5. 子组件使用父组件的数据,实现父组件与子组件数据的相互绑定,相互影响,就是使用传递时的属性 sync

     1 <body>
     2     <div class="box" id="box">
     3         <h3>父组件</h3>
     4         <input type="text" name="uName" class="a" v-model="uName">
     5         <input type="text" name="uAge" class="a" v-model="uAge">
     6         <aaa class="a" :username.sync="uName" :userage.sync="uAge"></aaa>
     7     </div>
     8     <template class="a" id="a">
     9         <h3>子组件</h3>
    10         <input type="text" v-model="username">
    11         <input type="text" v-model="userage">
    12     </template>
    13     <script>
    14         new Vue({
    15             el: "#box",
    16             data: {
    17                 uName: 'huanying2015',
    18                 uAge: 25
    19             },
    20             components: {
    21                 aaa: {
    22                     template: '#a',
    23                     props: ['username', 'userage']
    24                 }
    25             }
    26         });
    27     </script>
    28 </body>

    运行结果:

    6. 父子组件的单次绑定,在传递数据时,使用 .once 属性

     1 <body>
     2     <div class="box" id="box">
     3         <h3>父组件</h3>
     4         <input type="text" v-model="uName">
     5         <input type="text" v-model="uAge">
     6         <aaa class="a" :username.once="uName" :userage.once="uAge"></aaa>
     7     </div>
     8     <template class="a" id="a">
     9         <h3>子组件</h3>
    10         <input type="text" v-model="username">
    11         <input type="text" v-model="userage">
    12     </template>
    13     <script>
    14         new Vue({
    15             el: "#box",
    16             data: {
    17                 uName: "huanying2015",
    18                 uAge: 25
    19             },
    20             components: {
    21                 aaa: {
    22                     template: "#a",
    23                     props: ['username', 'userage'],
    24                 }
    25             }
    26         });
    27     </script>
    28 </body>

    运行结果:父组件和子组件的数据交互只是实现一次,其它时候,就取消绑定了

  • 相关阅读:
    flume未解之谜
    flume source,sinks类型官方翻译
    flume-event类
    flume课件(连)
    source监控端口,telnet写入此端口。sinks指定目录,文件以默认时间滚动生成
    linux命令拾遗
    nginx内置变量
    nginx.conf
    hive事物开启
    hiveHA
  • 原文地址:https://www.cnblogs.com/huanying2015/p/8533574.html
Copyright © 2020-2023  润新知