vue 中有 data() 、computed、methods、beforeRouteLeave、created等

具体的:

  data():定义一些文件中需要用到的变量,data中带return,是使数据只在当前组件中可用,不会影响其他组件,不使用return,会让数据在全局可见,会造成污染

  computed():用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理,

        它其实就是定义一些需要通过各种计算处理等得到的数据,data是定义一些初始化的变量

  methods:里面是放上下文中用到的函数的,比如,点击事件中调用一个函数,这个函数就写在methods里面

  beforeRouteLeave:离开路由之前执行的函数。

  created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。在实例创建完成后被立即调用

关于store:

  Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

  每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下两点不同:

  1. Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。

  2. 你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

  个人理解:

      store主要包括了state、getters、mutations、actions、modules

      具体的:                                                                        actions 和mutations都是去改变state中的数据,只是,actions中可以通过调用后端接口异步操作去该变state中的数据,也可以再actions中调用mutations,进行该变state中的值

    state, //类似于定义一些初始化的变量

    getters, //可以对这些变量(state)进行,派生出一些状态,例如对列表进行过滤并计数(一些筛选)

    mutations, //可以对state进行一些更改(用来触发同步操作的方法。)

    actions //可以对state进行一些更改,和mutations相似,(可以进行一些异步操作,可以提交mutations)

     modules  uex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:这个地方主要是引用其他子store

    

  mutations和actions 都可以在created中调用,如    this.$store.commit('showFooter'); commit=>mutations,用来触发同步操作的方法。
                        this.$store.dispatch('getThirdUnitStudent') dispatch =>actions,用来触发异步操作的方法。

  state, 可以在computed中用,        如  schoolName(){
                                return this.$store.state.info.schoolName
                              },

   

<template>
<div id="hasopen">
<div id="has" v-if="students.length">
<ul class="list" id="JS-list">
<li v-for="stu in students">
<div class="list_word" v-if="stu.indexCode">{{stu.indexCode}}</div>
<div class="list_li clearfix" v-else>
<img :src="stu.portrait">
<p>{{stu.user_name}}</p>
<i @click="open(stu.user_id,stu.phone_number)" class="icon-duoxuan"></i>
</div>
</li>
</ul>
<br>
<br>
<br>
</div>
<div id="nohas" v-else>
<p>暂无学生</p>
</div>
</div>
</template>
<script type="text/ecmascript-6">
export default { //data
data() { //定义的变量
return { //不使用函数return包裹的数据会在项目的全局可见,会造成变量污染
stuId: 0, //使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件。
classId: this.$route.params.classid,
willShow: false,
phone: '',
platform_id: JSON.parse(localStorage.getItem('platform_id'))
}
}, //computed
computed: { //用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,
students() { //然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理;
let _classId = this.$route.params.classid; //一个函数就返回一个变量,这些返回的变量是在函数中经过各种计算处理后得到的结果的
let _class = this.$store.state.Class.thirdUnitList[_classId];
let _filters = [];
let _last = '';
if (_class && _class.list instanceof Array) {
_class.list.forEach(_stu => {
let indexCode = _stu.abb.charAt(0).toUpperCase()
if (indexCode !== _last) {
_last = indexCode;
_filters.push({
indexCode
})
}
_filters.push(_stu);
})
}
return _filters;
}
}, //methods
methods: { //里面是放上下文中用到的函数的,比如,点击事件中调用一个函数,这个函数就写在methods里面
open(stuId) { //他在文件中开业这样调用{{ 函数名()}}
// this.willShow = true;
this.stuId = stuId;
},
hideMask() {
this.willShow = false;
},
editStudent() {
this.$router.push('/changestudent/' + this.classId + '/' + this.stuId);
},
},
beforeRouteLeave(to, from, next){ //beforeRouteLeave:离开路由之前执行的函数。
layer.closeAll(); //layer.closeAll: 关闭所有的弹框
next();
},

created(){ //created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
try { //在实例创建完成后被立即调用
MobclickAgent.onPageBegin("classes"); //里面可以调用一些方法什么的
} catch (e) {
console.log(e);
}
// this.students();
this.$store.commit('showFooter'); commit=>mutations,用来触发同步操作的方法。
this.$store.dispatch('getThirdUnitStudent') dispatch =>actions,用来触发异步操作的方法。

},
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "../../../assets/scss/common/mixin";
</style>

vue 学习小记的更多相关文章

  1. mongodb入门学习小记

    Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...

  2. Vue学习笔记-2

    前言 本文非vue教程,仅为学习vue过程中的个人理解与笔记,有说的不正确的地方欢迎指正讨论 1.computed计算属性函数中不能使用vm变量 在计算属性的函数中,不能使用Vue构造函数返回的vm变 ...

  3. Vue学习笔记-1

    前言 本文不是Vue.js的教程,只是一边看官网Vue的教程文档一边记录并总结学习过程中遇到的一些问题和思考的笔记. 1.vue和avalon一样,都不支持VM初始时不存在的属性 而在Angular里 ...

  4. javascript学习小记(一)

    大四了,课少了许多,突然之间就不知道学什么啦.整天在宿舍混着日子,很想学习就是感觉没有一点头绪,昨天看了电影激战.这种纠结的情绪让我都有点喘不上气啦!一点要找点事情干了,所以决定找个东西开始学习.那就 ...

  5. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  6. js 正则学习小记之左最长规则

    原文:js 正则学习小记之左最长规则 昨天我在判断正则引擎用到的方法是用 /nfa|nfa not/ 去匹配 "nfa not",得到的结果是 'nfa'.其实我们的本意是想得到整 ...

  7. js 正则学习小记之NFA引擎

    原文:js 正则学习小记之NFA引擎 之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee 等大神都把正则玩的出神入化后发现我只是个战五渣.  求抱大腿,求大神调教. 之前大致有个印象,正 ...

  8. js 正则学习小记之匹配字符串优化篇

    原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...

  9. CSS学习小记

    搜狗主页页面CSS学习小记 1.边框的处理   要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言 ...

随机推荐

  1. 利用LI标签仿照a中Link进行页面跳转?

    点击LI时仿照A标签进行页面跳转html: <ul> <li link="/school/schooldetail/success_detail?case_id=<! ...

  2. mysql字符集设置注意事项

    mysql字符集设置必须是在具体的某一个数据库情况下才能进行设置 否则会报错.

  3. Angular_上拉刷新

    1.先不做上拉触发,用button模拟一下,触发函数 export class StudyComponent implements OnInit { /*列表数据流 */ list$: Observa ...

  4. python epoll方式tcp连接回发消息

    # -*- coding:utf-8 -*- import socket import select class testserver(): def __init__(self): self.serv ...

  5. Non-decreasing Array

    Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...

  6. Python 并发编程

    进程 开启进程 from multiprocessing import Process import time def task(name): print('%s is running' %name) ...

  7. R语言数据类型

    R语言数据类型[转!!]Zhao-Pace  https://www.cnblogs.com/zhao441354231/p/5970544.html   R语言用来存储数据的对象包括: 向量, 因子 ...

  8. hdu2181 简单搜索

    题意: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第 ...

  9. 算法工程师<编程题>

    <编程题> 1.[Maximum Product Subarray 求最大子数组乘积] 这个求最大子数组乘积问题是由最大子数组之和问题演变而来,但是却比求最大子数组之和要复杂,因为在求和的 ...

  10. VMware14虚拟机上使用Ubuntu16.04遇到的各种问题(不定期更新)

    1.ubuntu系统界面无法全屏铺满的问题 网上大部分解决方案都是使用vmware tools,我没尝试过,不过这里推荐一个更加简单的方法,只需要输入两行命令 第一步:sudo apt-get ins ...