vue之data属性


<!DOCTYPE html>
<html>
<head>
 <title>培训代码</title>
 <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="js/vue.js"></script>
</head>
<body>
 <div>
  在new Vue()的时候,是可以给data直接赋值为一个对象的。
  但是在组件中,data必须是一个函数,注册组件其实并不产生新的组件类,但会产生一个可以用来实例化的新方式。
 因为可能在多处调用同一组件,所以为了不让多处的组件共享同一data对象,只能返回函数
 </div>
 
 <div>  data属性的三种写法及区别:
  <script type="text/javascript">
   var app=new Vue({
     el:'#ap',
     data:{
       isLogin: false
     }
   })
 </script>
 <script type="text/javascript">
   var app=new Vue({
     el:'#ap',
     data: function(){
       return {
         isLogin: false
       }
     }
   })
 </script>
 <script type="text/javascript">
   var app=new Vue({
     el:'#ap',
     data() {
       return {
         isLogin: false
       }
     }
   })
   
   <!-- 第3种是第2种的ES6写法 -->
 </script>
</div><br><br><br><br>
<div>两个实例:
 <p>1.用function return 其实就相当于申明了新的变量,相互独立</p>
    <div id="app">
        <my-btn></my-btn>
        <my-btn></my-btn>
        <my-btn></my-btn>
        <my-btn></my-btn>
        <my-btn></my-btn>
    </div>
    <!--注册一个组件-->
    <template id='myBtn'>
        <button @click="counter += 1">点击的次数{{counter}}</button>
    </template>

    <script>
        Vue.component('my-btn', {
            template: '#myBtn',
            data() {
                return {
                    counter: 0
                }
            }
        })
        new Vue({
            // el: '#app',
        }).$mount('#app')
    </script>
  
  <br>
  <p>2.如果不用function return 每个组件的data都是内存的同一个地址let data2,那一个数据改变其他也改变了,</p>
  <div id="app2">
    <my-btn2></my-btn2>
    <my-btn2></my-btn2>
    <my-btn2></my-btn2>
    <my-btn2></my-btn2>
    <my-btn2></my-btn2>
  </div>
  <!--注册一个组件-->
  <template id='myBtn2'>
    <button @click="counter += 1">点击的次数{{counter}}</button>
  </template>
   <script>
  
          let data2 = {
              counter:0
          }
  
          Vue.component('my-btn2', {
              template: '#myBtn2',
              data() {
                  return data2;
              }
          })
      
          new Vue({
              // el: '#app2',
          }).$mount('#app2');
      </script>
  </div>
</body>
</html>


免责声明!

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



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