1. 外部js调用vue的方法等

将vue实例中的this传入外部js文件(比如作为某方法的参数),即可访问传入实例的所有内容。调用该实例中子组件的方法,用$refs

2. 路由参数

传递:vm.$router.push({ name: '', params: { id: 1 } }); // 注意,用path属性,在目标路由中取不到参数值

获取:vm.$route.params.id;

3.@click

绑定类似于

<label>
<input
type="radio"
name="patient-radio"
:value="item.patientID"
v-model="follow.selected"
@click="selectPatient"
/> {{ item.realName }}
</label>

要绑定在input上,不要绑在label上,否则会出现事件冒泡。

4. vuex(状态管理)的使用
  • 访问store,可以事先在router.js中将store注册到根实例中,然后可以在各个组件通过this.$router访问到。
const app = new Vue({
store,
router,
render: h => h(index)
}).$mount('#app')

某组件中打印store中的信息:

mounted() {
console.log(this.$store.state); // 打印结果: Object {__ob__: Observer}
}
  • Vuex 允许我们在 store 中定义『getters』(可以认为是 store 的计算属性)。Getters 接受 state 作为其第一个参数;也可以接受其他 getters 作为第二个参数。

    在模块化的状态管理中,模块可以这样export:

    state.js
export const commonState = {
count: 0,
todos: [
{ id: 1, text: '第一', done: true },
{ id: 2, text: '第二', done: false },
{ id: 3, text: '第三', done: true }
]
}

getters.js:

export const commonGetters = {
doneTodos(state) {
return state.todos.filter(todo => todo.done)
},
doneTodosCount(state, getters) {
return getters.doneTodos.length
}
}

然后在index.js(store)中这样注册:

import Vue from 'vue'
import Vuex from 'vuex'
import * as actions from './actions'
import * as getters from './getters'
import * as state from './state'
Vue.use(Vuex)
export default new Vuex.Store({
state: state.commonState,
actions: state.commonActions,
getters: getters.commonGetters
})

在组件中,就可以通过this.$store直接调用它们:

console.log(this.$store.getters.doneTodosCount); // 结果为:2

当然也可以使用mapGetters 辅助函数,将 store 中的 state/getters 映射到局部计算属性:

import { mapState } from 'vuex'
import { mapGetters } from 'vuex'
export default {
computed: {
...mapState({
// 当映射的计算属性的名称与 state 的子节点名称相同时,
// 我们也可以给 mapState 传一个字符串数组。
// mapState(['count'])
count: state => state.count, // 为了能够使用this获取局部状态,必须使用常规函数
countPlusLocalState(state) {
return state.count + this.localCount
}
}),
...mapGetters([
'doneTodos',
'doneTodosCount'
]),
...mapGetters({
// 命名
doneCount: 'doneTodosCount'
})
},
mounted() {
// 通过vm.$store访问
console.log(this.$store.state.count) // 打印结果: 0
// 通过映射到当前实例计算属性访问
console.log(this.count); // 打印结果: 0 console.log(this.$store.getters.doneTodosCount) // 打印结果: 2
console.log(this.doneCount); // 打印结果: 2
}
}
  • Mutations

    更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。 必须同步执行。回调函数 (handler)接受 state 作为第一个参数;store.commit提交,你可以向 store.commit 传入额外的参数,即 mutation 的 载荷(payload),载荷应该是一个对象:store.commit('increment', { amount: 10 })

    提交 mutation 的另一种方式是直接使用包含 type 属性的对象:
store.commit({
type: 'increment',
amount: 10
})

handler:

mutations: {
increment (state, payload) {
state.count += payload.amount
}
}

在组件中提交 Mutations:

methods: {
// 状态管理 conmmit
...mapMutations({
// 映射 this.add() 为 this.$store.commit('increment')
add: 'increment'
})
},
mounted() {
let obj = {};
obj.amount = 1;
// 调用
this.add(obj);
console.log(this.count); // 打印结果为1
}
  • Actions

    Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态;Action 可以包含任意异步操作,也就是说 action 内部可以执行异步操作。触发Actions:store.dispatch();Actions 支持同样的载荷方式和对象方式。
5. 关于watch的使用

监听一个普通的变量简单,关于监听一个对象:

data() {
return {
modal: {
accept: []
}
}
},
watch: {
modal: {
handler(curVal, oldVal) {
if(curVal.accept.length <= 0)
this.modal.btnRDis = true;
else
this.modal.btnRDis = false;
    },
    deep:true
}
},

vue2.x 随记的更多相关文章

  1. Vue2.0 全家桶开发的网页应用(参照吾记APP)

    github链接 借鉴吾记APP,使用 vue2.0+vue-router+vuex 为主要技术栈,elementui做为ui框架,多模块 spa 模式,webpack2.0 负责模块打包,gulp ...

  2. vue2入坑随记(二) -- 自定义动态组件

    学习了Vue全家桶和一些UI基本够用了,但是用元素的方式使用组件还是不够灵活,比如我们需要通过js代码直接调用组件,而不是每次在页面上通过属性去控制组件的表现.下面讲一下如何定义动态组件. Vue.e ...

  3. h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片

    得益于前辈的分享,做了一个h5录音的demo.效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: 点击发送 将录音内容发送到对话框中.点 ...

  4. vue2入坑随记(一)

    都说Vue2简单,上手容易,但小马过河,自己试了才晓得,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前随便拿全局变量和修改dom的锤子不能用了,变换到关注数据本身.vue的 ...

  5. vue2入坑随记(一)-- 初始全家桶

    都说Vue2简单,上手容易,但小马过河,自己试了才晓得,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前随便拿全局变量和修改dom的锤子不能用了,变换到关注数据本身.vue的 ...

  6. 记一次vue2项目部署nginx静态文件404解决过程

    github上下的一个vue2的项目,运行可以的,webpack打包后,nginx请求报错: 发现路径很奇怪啊,所以果断来到build.js文件中看看是不是哪里不对. 已经一番引用查找: 发现在这里配 ...

  7. 记一次vue2路由参数传递this指针问题

    需要船体一个data()内的对象到另一个页面. <player-card v-for="(note, key) in sortedtNodes" :imgurl=" ...

  8. 基于vue2.0+vuex+localStorage开发的本地记事本

    本文采用vue2.0+vuex+localStorage+sass+webpack,实现一个本地存储的记事本.兼容PC端和移动端.在线预览地址:DEMO github地址:https://github ...

  9. 【转】Vue 脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)

    前言 文章内容覆盖范围,芝麻绿豆的破问题都有,不止于vue; 给出的是方案,但不是手把手一字一句的给你说十万个为什么! 有三类人不适合此篇文章: “喜欢站在道德制高点的圣母婊” – 适合去教堂 “无理 ...

随机推荐

  1. SPOJ - DQUERY 莫队

    题意:给定\(a[1...n]\),\(Q\)次询问,每次统计\([L,R]\)范围内有多少个不同的数字 xjb乱写就A了,莫队真好玩 #include<iostream> #includ ...

  2. BZOJ - 2115 独立回路 线性基

    题意:给定一个图集\((V,E)\),求路径\(1...n\)的最大异或和,其中重复经过的部分也会重复异或 所求既任意一条\(1...n\)的路径的异或和,再异或上任意独立回路的组合的异或和(仔细想想 ...

  3. Codeforces - 914F bitset 维护字符串匹配个数

    题意:给你一个串,支持两种操作,1修改某个点的字符,2询问[l,r]内模式串P与原串的匹配个数 bitset的写法是真的6啊,简直是优雅暴力的典范 bs[i]表示\(T_i\)与\(P\)匹配与否, ...

  4. PKI公钥基础设施简介

    PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书.一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的 ...

  5. 使用navicat for mysql图形界面操作数据库、使用node.js操作数据库写接口

    1.先启动MYSQL服务 2.打开navicat for mysql, 点击链接,输入如下的内容: 3.新建数据表 4.数据库(新建一个db.js) //数据库链接配置 module.exports ...

  6. js去掉浏览器右键点击默认事件(+vue项目开启右键行为)

    js去掉浏览器右键点击默认事件 1.阻止整个页面所有的右击事件 document.oncontextmenu = function(){ return false;} 2.特定的区域/元素 docum ...

  7. B/S 与 C/S 模型区别

    C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix或 SQL Server.客户端 ...

  8. [转] Linux命令——timeout

    [From] https://blog.csdn.net/xiaqunfeng123/article/details/54315390 Linux命令——timeout 命令简介 运行指定的命令,如果 ...

  9. 【研究】CVE-2017-11882-Office远程代码执行漏洞复现

    实验环境:win10+kali 工具:koadic,Command43b_CVE-2017-11882.py KALI: root@kali:/opt/koadic-master# ./koadic ...

  10. PIE SDK云图动画导出

    云图动画,就是将一组序列图以动画的形式进行轮播,PIE SDK可以将云图动画以gif或avi格式进行导出,本文示例以云图动画导出gif为例,这样只需要点开gif文件就可以浏览云图动画. 下面来介绍下实 ...