vue-router

除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。

1)router.push(location)

这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。

当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用router.push(...)

2)router.replace(location)

跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

点击<router-link :to="..." replace>等同于调用router.replace(...)

vue组件

注册

1)全局注册

//app.js
Vue.component('ttModal', Vue.asyncComponent('Common','ttModal'));
//ttModal.html
<div class="tt-modal-wrapper">
<div class="modal-mask" v-bind:class="{'in': isModalIn}" v-on:click="modalClose"></div>
<div class="modal-content" v-bind:class="{'in': isModalIn}">
modal-content.
<slot name="content"></slot>
</div>
</div>
//topicLeft.html
<tt-modal v-if="isShowCreateTopic" v-on:close="isShowCreateTopic = false">
<div slot="content">topicLeft.</div>
</tt-modal>

渲染后:

//ttModal.html
methods: {
modalClose: function(e) {
if(this.$el.contains(e.target)) {
       //vm.$el:Vue 实例使用的根 DOM 元素
this.$emit('close');
       //vm.$emit:触发当前实例上的事件即close事件
}
}
}

<slot> 元素可以用一个特殊的属性 name 来配置如何分发内容。多个 slot 可以有不同的名字。具名 slot 将匹配内容片段中有对应 slot 特性的元素。

2)局部注册

  通过使用组件实例选项注册,可以使组件仅在另一个实例/组件的作用域中可用。

使用组件时,大多数可以传入到 Vue 构造器中的选项可以在注册组件时使用,有一个例外: data 必须是函数。

//project.js
components: {
"projectDetail": Vue.asyncComponent('Project', 'projectDetail', 'Project/projectDetail/projectDetail')
}, //project.html
<project-detail></project-detail>

  Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery。vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁。另外,vue-resource还提供了非常有用的inteceptor功能,使用inteceptor可以在请求前和请求后附加一些行为,比如使用inteceptor在ajax请求时显示loading界面。

<div class="itemAddRow clearfix">
<i>项目名</i>
<textarea v-model="projectName" placeholder="请输入项目名" style="height:32px;"></textarea>
</div>
<div class="itemAddRow clearfix">
<i>项目描述</i>
<textarea v-model="projectDescription" placeholder="请输入项目描述" style="height:150px;"></textarea>
</div>
<div class="itemAddRow clearfix">
<i>项目状态</i>
<div>
<input type="radio" name="projectStatus" value="1" v-model="projectStatus">开发中&nbsp;&nbsp;
<input type="radio" name="projectStatus" value="2" v-model="projectStatus">已发布 &nbsp;&nbsp;
<input type="radio" name="projectStatus" value="3" v-model="projectStatus">稳定&nbsp;&nbsp;
<input type="radio" name="projectStatus" value="4" v-model="projectStatus">停止维护&nbsp;&nbsp;
</div>
</div>
data: function() {
return {
projectName:'',
projectDescription:'',
projectStatus:1
}
},
methods: {
addProject:function(){
var projectName=this.projectName.trim(),
projectDescription=this.projectDescription.trim();
if(projectName==''||projectDescription==''){
alert('请输入完整的项目信息');
return;
}
var postData={
name:projectName,
description:projectDescription,
status:this.projectStatus,
userId:this.$conf.userInfo.userId
};
var self=this;
Vue.http.post(this.$conf.API_createProject,postData).then(function(response) {
var data=response.data;
if(data.ReturnCode == '0000') {
         //vm.$parent:父实例,如果当前实例有的话
self.$parent.$parent.isShowProjectAdd = false;
}
});
}
}

组件实例的作用域是孤立的。这意味着不能并且不应该在子组件的模板内直接引用父组件的数据。

1)可以使用 props 把数据传给子组件。

prop 是父组件用来传递数据的一个自定义属性。子组件需要显式地用props选项声明 “prop”。

<!--taskAdd.html-->
<tt-popup top="10px" left="20px">
<div slot="content">users</div>
</tt-popup>
<!--ttPopup.html-->
<div class="tt-popup" v-bind:style="{top:top,left:left}">
<slot name="content"></slot>
</div>
//app.js
Vue.component('ttPopup', Vue.asyncComponent('Common','ttPopup'));//注册组件
//ttPopup.html
props: ['top','left'],

渲染后:

2)在子组件中使用this.$parent获取父组件实例

插件通常会为Vue添加全局功能。

1)Vue.js 的插件应当有一个公开方法 install 。这个方法的第一个参数是 Vue 构造器

2)通过全局方法 Vue.use(plugin) 使用插件

安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法将被作为 Vue 的参数调用。

//1,添加实例方法
function plugin(Vue) {
if(plugin.installed) {
return;
}
Vue.prototype.$conf = conf;
}
if(typeof window !== 'undefined' && window.Vue) {
window.Vue.use(plugin);
}
//2,添加全局方法或属性
function plugin(Vue) {
if(plugin.installed) {
return;
}
Vue.asyncComponent = asyncComponent;
}
if(typeof window !== 'undefined' && window.Vue) {
window.Vue.use(plugin);
}

vue2.0的学习的更多相关文章

  1. 【数据售卖平台】—— Vue2.0入门学习项目爬坑

    前言:这个项目是我从零学习Vue2.0时用于练习基础知识的入门项目,包含了Vue2.0几乎所有项目都会用到的基础功能,是新手用来练手的好项目,这里温故知新对功能点做一个总结.github地址:http ...

  2. vue2.0 element学习

    1,bootstrap和vue2.0结合使用 vue文件搭建好后,引入jquery和bootstrap 我采用的方式为外部引用 在main.js内部直接导入 用vue-cli直接安装jquery和bo ...

  3. vue2.0 路由学习笔记

    昨天温故了一下vue2.0的路由 做个笔记简单记录一下! 1.首相和vue1.0一样 要使用vuejs的路由功能需要先引入vue-router.js 2.然后修改原有a标签处代码 这里以一个ul li ...

  4. vue2.0 mintUI 学习备忘

    一 技术栈:vuecli+vuejs2+mintUI+axios vuecli :脚手架工具 vuejs:前端框架  mintUI:基于vuejs移动端UI  axios:vuejs ajax数据交互 ...

  5. vue2.0学习笔记之路由(二)路由嵌套+动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. vue2.0学习笔记之路由(二)路由嵌套

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布

    Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...

  8. VUE2.0学习总结

    摘要: 年后公司项目开始上vue2.0,自己对学习进行了总结,希望对大家有帮助! VUE2.0学习 vue介绍 vue是什么? https://vuefe.cn/guide vue也是一个数据驱动框架 ...

  9. vue2.0 饿了么项目学习总结

    最近在GitHub上发现一个基于vue2.0的饿了么项目.本着互联网的分享精神,现在将我自己所理解的,所总结的经验分享给大家.本篇文字我将从学习的角度向大家分享. 在学习本项目之前我已经将vue2.0 ...

随机推荐

  1. Flash actionscript3.0 多个setTimeout之间会顺序执行 单线程执行 无法中止

    做了一个试验,测试能否在另外的setTimeout中中断其他代码的执行.结果表明,是不可能的,Actionscript会按顺序,逐个逐个的执行. private var index:int; priv ...

  2. exception PLS-00403: expression 'V_END' cannot be used as an INTO-target of a SELECT/FETCH statement

      exception PLS-00403: expression 'V_END' cannot be used as an INTO-target of a SELECT/FETCH stateme ...

  3. 【Docker】安装tomcat并部署应用

    安装tomcat 1.拉取tomcat镜像 docker pull docker.io/tomcat 查看镜像 docker images 2.启动tomcat 首先添加8090端口:firewall ...

  4. PLY格式介绍

    PLY是一种电脑档案格式,全名为多边形档案(Polygon File Format)或 斯坦福三角形档案(Stanford Triangle Format).  史丹佛大学的 The Digital ...

  5. JS获取浏览器高宽度,屏幕分辨率和一些定位空隙等

    IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...

  6. C语言printf

    1.调用格式为  printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部 ...

  7. Java典型应用彻查1000例:图形与网络游戏开发 PDF 扫描版[68M]

    <Java典型应用彻查1000例·图形与网络游戏开发>实例丰富,编排合理,可以让有初级Java基础的读者,从陌生到完全熟练地设计网络游戏,进而掌握3D立体绘图方法,适合作为Java网络游戏 ...

  8. OpenWrt的开机启动服务(init scripts)

    参考 https://wiki.openwrt.org/doc/techref/initscripts 以一个简单的例子来说明 #!/bin/sh /etc/rc.common # Example s ...

  9. Linux-Linux下安装redis报错"undefined reference to__sync_add_and_fetch_4"解决办法

    如果出现这种错误可以在make的时候加上CFLAGS="-march=i686" 即 make CFLAGS="-march=i686" ----------- ...

  10. tkinter Canvas画图片大坑总结

    一.ImportError: cannot import name '_imagingtk' 问题描述 使用tkinter画pillow生成的图片时,在tkinter中抛出此异常. 解决方案 pip ...