<Vue2.x>总结:注意点

2018-06-09  本文已影响10人  玉圣

一、组件间通信

1、多层组件间通信的命名问题

1.1、问题

在使用多层组件间通信的时候,经过反复测试,发现创建的组件,名称不能使用驼峰式的写法,使用后,则无法展示使用

1.2、试例:

注:这不是示例,是来测试的例子,所以叫试例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue多层组件通信</title>
</head>
<body>
<div id="app">
    <group :name="nick" :photo="pic"></group>
</div>

<template id="pic_iv">
    <img :src="src" alt="" width="200">
</template>
<template id="name_tv">
    <p>{{name}}</p>
</template>

<template id="s_group">
    <div>
        <Imageview :src="photo"></Imageview>  //小写的v
        <Textview :name="name"></Textview>  //小写的v
    </div>
</template>

<script src="js/vue.js"></script>
<script>
    //js相关代码

    let iv = Vue.extend({
        template:"#pic_iv",
        props:["src"]
    });

    let tv = Vue.extend({
        template: "#name_tv",
        props:["name"]
    });

    Vue.component("group", {
        template:"#s_group",
        props:["name", "photo"],
        components:{
            "Imageview" : iv,
            "Textview" : tv
        }
    });
    new Vue({
        el:'#app',
        //Vue 实例的数据对象
        data: {
            nick:"张三李四王二五",
            pic:"img/girl2.jpg"
        },
    });
</script>
</body>
</html>
显示结果
<template id="s_group">
    <div>
        <imageView :src="photo"></imageView>  //错误写法:大写的V
        <image-view :src="photo"></image-view>  //正确写法,需要将驼峰写法变为:短横线+小写
        <Text_view :name="name"></Text_view>
    </div>
</template>
//.....
    Vue.component("group", {
        template:"#s_group",
        props:["name", "photo"],
        components:{
            "imageView" : iv,  //ImageView的V大写了
            "Text_view " : tv
        }
    });
//.....
显示结果
1.3、结论:

从当前例子中可以得出结论,因此在命名组件的时候,可以有如下的方式(但不局限)

二、组件的使用

1、v-textv-html 以及 {{}} 的区别

详见:https://www.jianshu.com/p/4131e8b033de

1.1、作用
1.2、区别:
1.3、注意:
1.4、示例:
//html
<h1 id="app1" v-text="'今天是'+year+'年'+month+'月'"></h1>

//javascript
var app1 = new Vue({
    el : "#app1",
    data : {
        year : new Date().getFullYear(),
        month : new Date().getMonth()+1
    }
})

2、浏览器解析某些组件,显示错误的问题

1.1、错误示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>is的使用,解决浏览器渲染组件错误的问题</title>
</head>
<body>
<div id="app">
    <table>
        <tbody>
            <row></row>
            <row></row>
            <row></row>
        </tbody>
    </table>
</div>

<script src="js/vue.js"></script>
<script>
    Vue.component("row", {
        template: '<tr><td>这是一个单元格</td></tr>'
    });

    let vm = new Vue({
        el: "#app",
        data: {

        }
    });
</script>

</body>
</html>
显示结果
1.2、问题及分析:
1.3、解决方案:

修改的代码:

<div id="app">
    <table>
        <tbody>
            <tr is="row"></tr>
            <tr is="row"></tr>
            <tr is="row"></tr>
        </tbody>
    </table>
</div>
显示结果
1.4、注意:
上一篇下一篇

猜你喜欢

热点阅读