Vue 组件与复用


(1)全局注册

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>Vue</title>
    </head>

    <body>
        <div id="app">
            <my-component>

            </my-component>
        </div>
        <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script>
        <script type="text/javascript">
            //示例前注册
 Vue.component('my-component', { //DOM结构必须被元素包含
 template: '<div>组件内容</div>' }) new Vue({ el: "#app" }) </script>
    </body>

</html>

 

(2)局部注册

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>Vue</title>
    </head>

    <body>
        <div id="app">
            <my-component>

            </my-component>
        </div>
        <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script>
        <script type="text/javascript">
            var Child = { template: '<div>组件内容</div>' } new Vue({ el: "#app", components: { 'my-component': Child } }) </script>
    </body>

</html>

(3)is挂载组件

table、ul、ol、select这些标签会限制其内的元素,这时可以使用is来挂载组件

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>Vue</title>
    </head>

    <body>
        <div id="app">
            <table>
                <tbody is='my-component'>
                </tbody>
            </table>
        </div>
        <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script>
        <script type="text/javascript">
            //示例前注册
 Vue.component('my-component', { //DOM结构必须被元素包含
 template: '<div>组件内容</div>' }) new Vue({ el: "#app" }) </script>
    </body>

</html>

(4)组件也可以有data,method,computed等属性。但是data是函数,数据需要return出去。

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>Vue</title>
    </head>

    <body>
        <div id="app">
            <my-component></my-component>
        </div>
        <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script>
        <script type="text/javascript">
            //示例前注册
 Vue.component('my-component', { //DOM结构必须被元素包含
 template: '<div>{{message}}</div>', data: function() { return { message: '组件内容' } } }) new Vue({ el: "#app" }) </script>
    </body>

</html>

(5)解决多个组件之间数据共享问题

给组件返回一个新的data对象

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>Vue</title>
    </head>

    <body>
        <div id="app">
            <my-component></my-component>
            <my-component></my-component>
            <my-component></my-component>
            
        </div>
        <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script>
        <script type="text/javascript">
            //示例前注册
 Vue.component('my-component', { //DOM结构必须被元素包含
 template: '<button @click="counter++">{{counter}}</button>', data: function() { return { counter: 0 } } }) new Vue({ el: "#app" }) </script>
    </body>

</html>

 (6)props传递数据、events触发事件和slot内容分发构成Vue组件的3个API来源


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM