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. unet 网络接受任意大小的输入

    将网络的输入定义的placeholder 大小设为:[None,None,c], 不设置固定的大小. 但是出现问题: 前层特征图与后层特征图进行组合时,尺寸大小不一致: [32, 60, 256] 和 ...

  2. 小程序通过 url 向内嵌 H5 传参注意事项

    当在小程序中通过 url 向 <web-view> 内嵌的 H5 传参时,当包含特殊字符时需要进行编码处理(不然 <web-view> 中是拿不到值的,小程序竟然没有错误提示. ...

  3. 前端DES加密

    /** * DES加密/解密 * @Copyright Copyright (c) 2018 * @author mrDu * @see DESCore */ /* * encrypt the str ...

  4. 只有try和finally,没有catch

    因为没有catch捕获异常,所以异常发生时,会将异常抛出,导致程序中止:在抛出之前会执行finally中的代码. 用于无法捕获处理异常,需要在程序结束之前进行善后处理的场景

  5. 三种工具绘制errorbar图

    误差棒是数据可变性的图形表示,并用于图表以指示所报告的测量中的误差或不确定性.他们给出了测量精确度的一般概念,或者相反,距报告值有多远,真实(无误差)值可能是多少.误差线通常代表不确定度的一个标准偏差 ...

  6. git知识总结-1.git基础之数据存储

    1.前言 git包含四种对象文件: blob tree commit tag(目前没用到,暂时忽略) 2. git对象的关系   图 git三种对象关系   粗略一看,可以大致感觉出blob类似于文件 ...

  7. 使用Mermaid画图

    流程图的示例 时序图的示例 甘特图的示例 FAQ 很多时候,你想解释自己的想法/代码,但是用语言来表达会很啰嗦,并且读者也不易理解.一般这种情况下,我们都会想使用图解来解释.但是,我们也不会想下载那些 ...

  8. Centos6.8 yum安装MySQL5.6

    第一步:安装仓库wget http://repo.mysql.com//mysql57-community-release-el6-8.noarch.rpmrpm -ivh mysql-communi ...

  9. aptitude与apt-get

    aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具.与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些.举例来说,aptitud ...

  10. 24 类:组合 继承 super关键字 面向对象的三大性

    组合 组合:自定义类的对象作为另外一个类的属性 class Teacher: def __init__(self, name, age): self.name = name self.age = ag ...