zoukankan      html  css  js  c++  java
  • Vue---基本知识

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="app">
            <!-- //基本变量 -->
            <p>{{message}}</p> <br>
            <hr>
            <!-- 绑定属性v-bind 简写: -->
            <p v-bind:title='title'>Look at me,put mouse here</p> <br>
            <hr>
            <!-- 绑定事件v-on 简写@ -->
            <button v-on:click='reverseMessage'>Click me</button> <br>
            <hr>
    
            <!-- 绑定条件v-if -->
            <p v-if='seen'> Can you look at me?</p> <br>
            <button type="submit" @click='isShow' value="Click">Click</button> <br>
            <hr>
            <!-- 绑定循环v-for -->
            <ul>
                <li v-for='(book,index) in books' :key='index'>
                    {{index}}==========={{book.id}}======={{book.author}}========={{book.name}}</li>
            </ul>
            <br>
            <hr>
            <!-- 绑定函数methods function(){} -->
            <button @click='deletebook'>DEL</button> <br>
            <hr>
            <!-- input type=text   v-model绑定-->
            <input type="text" v-model='inputmessage'>{{inputmessage}} <br>
            <!-- <input type="text" v-model.lazy='inputmessage'>{{inputmessage}}  <br> -->
            <!-- <input type="text" v-model.trim='inputmessage'>{{inputmessage}}  <br> -->
            <!-- <input type="text" v-model.number='inputmessage'>{{inputmessage}}  <br>    
             不要用 -->
            <hr>
            <!-- input radio  v-model绑定 字符串或者数字属性 -->
            <input type="radio" v-model='radiomessage' value="Yes">YES <br>
            <input type="radio" v-model='radiomessage' value="No">NO <br>
            {{radiomessage}} <br>
            <hr>
            <!-- input chcekbox v-model 绑定 复选框   数组属性 -->
            <input type="checkbox" v-model='chcekmessage' value='a'>A <br>
            <input type="checkbox" v-model='chcekmessage' value='b'>B <br>
            <input type="checkbox" v-model='chcekmessage' value='c'>C <br>
            {{chcekmessage}} <br>
            <hr>
            <!-- input textarea v-model 绑定文本信息 -->
            <textarea v-model='testareamessage'></textarea> <br>
            {{testareamessage}} <br>
            <hr>
            <!-- input button  v-on 属性 简写@事件绑定 -->
            <input type="button" value='Click' @click='say("你好,中国")'> <br>
            <hr>
            <!-- select option  v-model 属性 绑定基本类型属性   -->
            <select v-model='selectmessage'>
                <option selected disabled value="">请选择</option>
                <option value="AA">A</option>
                <option value="BB">B</option>
                <option value="CC">C</option>
                <option value="DD">D</option>
            </select> <br>
            {{selectmessage}} <br>
            <hr>
            <!-- 插槽slot 组件插槽 绑定Vue.component('',{template:{},props:{}}) -->
            <!-- 父组件和子组件通信 v-bind 简写: props绑定 -->
            <!-- 子组件向父组件传值,子组件绑定事件,发送$emit('事件名称',传递参数),父组件监听事件'事件名称',触发事件 -->
            <!-- 子组件向父组件传递多个值的时候,用arguments 来接住。 -->
            <!-- 子组件向父组件传递单个值的时候,可以直接用传递的参数名来接住 -->
            <app-view>
                <app-header slot='app-header' :header='message'></app-header>
                <app-content slot='app-content' v-for='(book,index) in books' :key='index' :index='index' :book=book
                    @subevent='sub(arguments)'></app-content>
            </app-view>
        </div>
        <script>
            // 自定义组件,组件插槽    //  v-slot插槽 <slot name=""> slot=""    
            // template 中自定义组件不能作为根节点,要用其他标准标签包裹,在容器里。
            Vue.component('app-view', {
                template: `
                    <div>
                        <slot name='app-header'></slot>
                        <ul>
                        <slot name='app-content'></slot>
                        </ul>
                    </div>                
                `
            })
            Vue.component('app-header', {
                props: ['header'],
                template: '<div>{{header}}</div>'
            })
            Vue.component('app-content', {
                props: ['book', 'index'],
                template: `<li >
                    {{index}}==========={{book.id}}======={{book.author}}========={{book.name}}=====
                    <input type='submit' value="Alert"  @click='subclick'/>
                    </li>`,
                    // template模板里 input标签定义子组件事件 点击事件 触发子组件方法。  
                    // 子组件触发click事件通过$emit ==》发射==》 【事件名subevent 和参数值】 给父组件,父组件监听事件【事件名subevent】,触发事件函数sub(arguments),调用父组件的方法。
                methods: {
                    subclick: function () {
                        this.$emit('subevent', this.book, this.index, event);
                    }
                }
            }
            )
            // 创建Vue对象 Vue对象的属性包括 el  data  methods   created  computed  mouted  watch 
            var vm = new Vue({
                // el  唯一最外层容器  document.getElementById #app  document.getElementByClassName  .app
                el: '#app',   
                data: {
                    // 要绑定的属性 可以绑定到
                    // {{}}、     v-bind标签属性class style id等      v-on(注意事件名称要小写)标签事件     v-model(修饰符.trim .lazy .number)表单值value  
                    //  v-if 判断属性 控制标签的display:block  v-show 标签的创建和销毁.
                    // v-for ul-li  ol-li  table-tr-td的标签的循环(item,index) in items  获取的(item,index)有顺序关系,                     
                    message: 'Hello,China.',
                    title: 'loading at' + new Date().toString(),
                    seen: true,
                    inputmessage: '',
                    radiomessage: '',
                    chcekmessage: [],
                    selectmessage: '',
                    testareamessage: '',
                    books: [
                        { id: 1, author: 'A', name: 'Java' },
                        { id: 2, author: 'B', name: 'Python' },
                        { id: 3, author: 'C', name: 'C++' },
                        { id: 4, author: 'D', name: 'PHP' },
                        { id: 5, author: 'E', name: 'Javascript' },
                    ]
                },
                methods: {
                    reverseMessage: function () {
                        this.message = this.message.split('').reverse().join('');
                    },
                    isShow: function () {
                        this.seen = !this.seen;
                    },
                    deletebook: function () {
                        this.books.pop();
                    },
                    say: function (message) {
                        alert(message);
                    },
                    sub: function (arguments) {
    
                        console.log(arguments[0].author, arguments[0].name, arguments[1], arguments[2]);
                        // console.log(arguments.book);?
                    }
                }
            })
    
        </script>
    
    
    </body>
    
    </html>
  • 相关阅读:
    来自Ext的UI边界识别函数constrain
    js模拟静态方法
    ExtJs 带参数的MVC
    call
    Ext表单验证
    【Web入门系列】初探HttpServletResponse
    【Web入门系列】初探HttpServletRequest
    【Java入门系列】面向对象特性-多态
    【Java入门系列】final关键字
    【Java入门系列】static关键字
  • 原文地址:https://www.cnblogs.com/chencn/p/12485634.html
Copyright © 2011-2022 走看看