vue2.x 随记
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 随记的更多相关文章
- Vue2.0 全家桶开发的网页应用(参照吾记APP)
		
github链接 借鉴吾记APP,使用 vue2.0+vue-router+vuex 为主要技术栈,elementui做为ui框架,多模块 spa 模式,webpack2.0 负责模块打包,gulp ...
 - vue2入坑随记(二) -- 自定义动态组件
		
学习了Vue全家桶和一些UI基本够用了,但是用元素的方式使用组件还是不够灵活,比如我们需要通过js代码直接调用组件,而不是每次在页面上通过属性去控制组件的表现.下面讲一下如何定义动态组件. Vue.e ...
 - h5 录音  自动生成proto Js语句  UglifyJS-- 对你的js做了什么  【原码笔记】-- protobuf.js 与 Long.js  【微信开发】-- 发送模板消息  能编程与会编程  vue2入坑随记(二) -- 自定义动态组件  微信上传图片
		
得益于前辈的分享,做了一个h5录音的demo.效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: 点击发送 将录音内容发送到对话框中.点 ...
 - vue2入坑随记(一)
		
都说Vue2简单,上手容易,但小马过河,自己试了才晓得,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前随便拿全局变量和修改dom的锤子不能用了,变换到关注数据本身.vue的 ...
 - vue2入坑随记(一)-- 初始全家桶
		
都说Vue2简单,上手容易,但小马过河,自己试了才晓得,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前随便拿全局变量和修改dom的锤子不能用了,变换到关注数据本身.vue的 ...
 - 记一次vue2项目部署nginx静态文件404解决过程
		
github上下的一个vue2的项目,运行可以的,webpack打包后,nginx请求报错: 发现路径很奇怪啊,所以果断来到build.js文件中看看是不是哪里不对. 已经一番引用查找: 发现在这里配 ...
 - 记一次vue2路由参数传递this指针问题
		
需要船体一个data()内的对象到另一个页面. <player-card v-for="(note, key) in sortedtNodes" :imgurl=" ...
 - 基于vue2.0+vuex+localStorage开发的本地记事本
		
本文采用vue2.0+vuex+localStorage+sass+webpack,实现一个本地存储的记事本.兼容PC端和移动端.在线预览地址:DEMO github地址:https://github ...
 - 【转】Vue 脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)
		
前言 文章内容覆盖范围,芝麻绿豆的破问题都有,不止于vue; 给出的是方案,但不是手把手一字一句的给你说十万个为什么! 有三类人不适合此篇文章: “喜欢站在道德制高点的圣母婊” – 适合去教堂 “无理 ...
 
随机推荐
- 关于cin 与 cout 的加速
			
在用cin 与 cout 的时候 可以使用 ios::sync_with_stdio(); cin.tie(); cout.tie(); 这样在输入大数据的时候可以加快许多
 - CI 框架中的日志处理 以及 404异常处理
			
最近在整理项目中的日志问题,查了一些关于 “CI 框架中的日志处理 以及 404异常处理” 的东西,顺便记录一下: 关于错误日志: 1. 在CI框架中的 system/core/CodeIgniter ...
 - FileSearch.java
			
!=fileList.size()) { ]) { fileOutputStream.write(bytes; i < files.length; i++) {// 将其中的文件夹遍历出来,并调 ...
 - linux拓展之 用linux命令 管理windows一秒完成不可思议的操作--本节实战find 移动!!
			
花里胡哨的东西太多,有时候觉得简单也好! 你学习了Linux,是不是觉得Linux很强大!命令的多样性结合性有没有把你征服? 在那个烈日炎炎的夏日,我下载了辣末多老男孩的视屏----但是突然我只想看t ...
 - Docker的学习笔记(开发的技术分享转发)
			
我的Docker学习记录一.安装dockeryum install -y docker-io二.使用docker1.下载镜像docker pull <image>2.查询镜像docker ...
 - Grafana监控可视化环境搭建
			
依赖库Go 1.6NodeJS v4+sqlite3GO 环境搭建 vi /etc/profile export GOPATH="/root/go" export GOROOT=& ...
 - continue  break  return
			
ontinue: 可以让程序跳过,continue关键字之后的语句,回到while循环的第一行命令 break: 让程序完全跳出循环,结束while循环的执行 return: 从查询或过程中无条件退出 ...
 - C#中的MD5加密
			
1 using System.Web.Security; 2 string pswd = FormsAuthentication.HashPasswordForStoringInConfigFile ...
 - double类型计算
			
下面两个例子体现两个运算规则 一.四舍五入 //四舍五入 double doublenum = Math.Round(12.5, MidpointRounding.AwayFromZero); //两 ...
 - 深入理解 Java 内存模型(转载)
			
摘要: 原创出处 http://www.54tianzhisheng.cn/2018/02/28/Java-Memory-Model/ 「zhisheng」欢迎转载,保留摘要,谢谢! 0. 前提 &l ...