vue基础学习2

学习资源:https://www.bilibili.com/video/BV1qb41187fZ?p=16

实例化多个Vue对象

多个vue对象操控不同的对象(el是不同的值),可以同时存在,相互影响。

在下面的例子中,有两个div,demo_one与demo_two;对应是两个vue,one与two。

然后第二个vue对象可以在methods中定义函数来改变第一个vue对象的属性,one.title=“a new title”。

第二种修改vue对象的方法是,在vue外部修改,two.title=“a new title”

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>初始化多个Vue实例对象</h1>
    <div id="demo_one">
        <h2>{
   
   {title}}</h2>
        <p>{
   
   {greet}}</p>
    </div>
    <div id="demo_two">
        <h2>{
   
   {title}}</h2>
        <p>{
   
   {greet}}</p>
        <button @click="changeTitle()">change Demo_one's title</button>
    </div>

    <script src="../vue.js"></script>
    <script>
        var one = new Vue({
     
     
            el:'#demo_one',
            data:{
     
     
                title:'demo one的内容',
            },
            methods:{
     
     

            },
            computed:{
     
     
                greet:function(){
     
     
                    return "hello demo_one"
                }
            }
        });

        var two = new Vue({
     
     
            el:'#demo_two',
            data:{
     
     
                title:'demo two的内容',
            },
            methods:{
     
     
                changeTitle:function(){
     
     
                    one.title="DEMO ONE"
                }
            },
            computed:{
     
     
                greet:function(){
     
     
                    return "hello demo_two"
                }
            }
        });

        two.title="DEMO TWO";
    </script>
</body>
</html>

初始vue组件

在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#demo '})在每个页面内指定一个容器元素。

在这个例子中,网页上会显示两段话和两个按钮,点击按钮,即可修改data中的name属性(从shelley变成leslie,再从leslie变成shelley)

其中要特别注意的是,template里面只能放一个标签,如果要放多个标签就要先放一个根标签,比如例子中最外面的<p>

<body>
    <div id="demo_one">
        <greeting></greeting>
    </div>

    <script src="../vue.js"></script>
    <script>
        Vue.component("greeting",{
     
     
            template:`
                <p>
                    {
      
      {name}}:  hello stranger
                    <button @click="changeName()">更改姓名</button>
                </p>
                `,
            data:function(){
     
     
                return{
     
     
                    name:"shelley"
                }
            },
            methods:{
     
     
                changeName:function(){
     
     
                    this.name=(this.name=="shelley"? "leslie":"shelley");
                }
            }
        })
        new Vue({
     
     
            el:"#demo_one",
        });
    </script>
</body>

上面在data中用了函数return一个对象,其实也可以用外部设置变量data来return 一个对象,但是使用这个方法时会让两个div都同时发生改变。

用上面的方法可以只改变单个div,这样更好。

<body>
    <div id="demo_one">
        <greeting></greeting>
    </div>
    <div id="demo_two">
        <greeting></greeting>
    </div>

    <script src="../vue.js"></script>
    <script>
        var data={
     
     
            name:"oliver"
        }

        Vue.component("greeting",{
     
     
            template:`
                <p>
                    {
      
      {name}}:  hello stranger
                    <button @click="changeName()">更改姓名</button>
                </p>
                `,
            data:function(){
     
     
                return data;
            },
            methods:{
     
     
                changeName:function(){
     
     
                    this.name=(this.name=="shelley"? "leslie":"shelley");
                }
            }
        })

        new Vue({
     
     
            el:"#demo_one",
        });
        new Vue({
     
     
            el:"#demo_two",
        })
    </script>
</body>

(开始水博客…)

猜你喜欢

转载自blog.csdn.net/s_h_e_l_l_e_y/article/details/109407799