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

使用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>

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

时间: 2024-10-12 14:19:40

Vue系列之 => 组件中的data和methods的相关文章

深入理解--VUE组件中数据的存放以及为什么组件中的data必需是函数

1.组件中数据的存放 ***(重点)组件是一个单独模块的封装:这个模块有自己的HTML模板,也有data属性. 只是这个data属性必需是一个函数,而这个函数返回一个对象,这个对象里面存放着组件的数据. <template id="MyCpn"> <div> <h2>组件数据的存放 </h2> <p>{{title}}</p> </div> </template> <script>

vue02----什么是组件、组件创建、全局组件、局部组件、组件嵌套、组件传值、为什么组件中的data不是一个对象而是一个函数

### 什么是组件? 将代码进行复用 组件是实例的拓展子类 组件继承自实例,实例有的组件大部分都有,稍有变异 ### 组件创建 创建组件模板的2种方式: 1.通过template标签     template:"#tpl" 2.通过字符串模板   template:"<h1>吴启浪</h1>" ### 全局组件 所有的实例都可以使用 Vue.component("wql",{ template:"<h1&g

基于vue项目的组件中导入mui框架初始化滑动等效果时需移除严格模式的问题

基于vue项目的组件中导入mui框架初始化滑动等效果时,控制台报错:Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them 可使用 babel-plugin -transform-remove-strict-mode 移除严格模式 可先进行$ n

Vue组件中的Data为什么是函数。

简单点说,组件是要复用的,在很多地方都会调用.   如果data不是函数,而是属性,就又可能会发生多个地方的相同组件操作同一个Data属性,导致数据混乱. 而如果是函数,因为组件data函数的返回值是{属性:属性名},所以每次返回都会在堆空间创建一个新的空间,所以各个组件不会发生操作同一个数据,防止数据混乱. 原文地址:https://www.cnblogs.com/itrencaoqi/p/12175420.html

Vue事件在组件中的简单使用以及子组件事件触发父组件自定义事件

在Vue中,通过v-on 来监听DOM事件,可以通过@简写代替. 一个简单的在组件中的事件调用示例 在template的Html中使用v-on或@监听一个click事件,并指定事件执行handleClick方法. handleClick需要在组件的methods集合中定义. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta

Vue系列之 =&gt; 组件切换

组件切换方式一 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-U

Vue框架——页面组件中使用小组件

小组件在components文件夹中,页面组件在views文件夹中 一.先写小组件的vue,比如text.vue(在template设置模板渲染,style设置样式) <template> <div class="text"> <p>tttt</p> </div> </template> <script> export default { name: "text" } </sc

VUE -- iview table 组件 中使用 upload组件 上传组件 on render 事件不会触发问题

碰到的问题是: upload 组件在 on中写的监听事件不会被触发 在 props 中来监听:==> 原文地址:https://www.cnblogs.com/mafeng/p/11027356.html

vue 单文件组件中样式加载

在写单文件组件时,一般都是把标签.脚本.样式写到一起,这样写个人感觉有点不够简洁,所以就想着把样式分离出去. 采用import加载样式 在局部作用域(scoped)采用@import加载进来的样式文件,想法是美好的.以为这样加载进来的样式文件也只对当前组件有效:可现实是残酷的,这样加载进来的样式无法限制其作用域. <style scoped> @import "样式文件"; </style> 解决方案 采用 src属性加载样式. <style src=&q