码迷,mamicode.com
首页 > 其他好文 > 详细

Vue系列之 => 组件中的data和methods

时间:2018-12-31 22:41:49      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:rem   方法   防止   char   size   lan   title   mat   nbsp   

使用data
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>Document</title>
 9     <script src="./lib/jquery2.1.4.min.js"></script>
10     <script src="./lib/Vue2.5.17.js"></script>
11     <link href="https://cdn.bootcss.com/animate.css/3.7.0/animate.css" rel="stylesheet">
12 </head>
13 
14 <body>
15     <div id="app">
16         <mycom1></mycom1>
17     </div>
18 
19     <template id="temp1">
20         <div>
21             <h1>呵呵嘿嘿嘻嘻</h1>
22             <h2>{{ msg }}</h2>
23         </div>
24     </template>
25     <script>
26         // 组件可以有自己的data数据,组件的data和实例的data不一样
27         //实例中的data可以为一个对象,在组件中的data必须是一个方法且返回一个对象
28         //组件中的数据和实例中使用的方式一样
29         Vue.component(‘mycom1‘,{
30             template : ‘#temp1‘,
31             data : function(){
32                 return {
33                     msg : ‘这是组件自己定义的data数据‘
34                 }
35             }
36         })
37         var vm = new Vue({
38             el: ‘#app‘,
39             data: {},
40             methods: {
41 
42             },
43         })
44 
45     </script>
46 </body>
47 
48 </html>

使用methods >> 为什么组件中的data必须要用function

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>Document</title>
 9     <script src="./lib/jquery2.1.4.min.js"></script>
10     <script src="./lib/Vue2.5.17.js"></script>
11     <link href="https://cdn.bootcss.com/animate.css/3.7.0/animate.css" rel="stylesheet">
12 </head>
13 
14 <body>
15     <div id="app">
16         <counter></counter>
17         <hr>
18         <counter></counter>
19         <hr>
20         <counter></counter>
21         <hr>
22     </div>
23 
24     <template id="tmp1">
25         <div>
26             <input type="button" value="点我+1" @click="increment">
27             <h3>{{ count }}</h3>
28         </div>
29     </template>
30     <script>
31         // 在外部定义一个对象
32         var dataObj = { count : 0}
33         // 这是一个计数器的组件
34         Vue.component(‘counter‘,{
35             template : ‘#tmp1‘,
36             data : function(){
37                 // 直接return外部的dataObj,此时会有一个问题,3个计时器共用了这个对象,
38                 //当点击第一个计时器,其他计时器也跟着增加了。
39                 // return dataObj 这种方式是错误的
40                 return {count : 0} //使用function来防止
41             },
42             methods: {
43                 increment(){
44                     this.count++
45                 }
46             },
47         })
48 
49         var vm = new Vue({
50             el: ‘#app‘,
51             data: {},
52             methods: {
53 
54             },
55         })
56 
57     </script>
58 </body>
59 
60 </html>

 

Vue系列之 => 组件中的data和methods

标签:rem   方法   防止   char   size   lan   title   mat   nbsp   

原文地址:https://www.cnblogs.com/winter-shadow/p/10203387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!