vuejs,router
接下来我们要做的是vue的路由处理,首先当然是安装:
npm install vue-router
接下打开我们的main.js,引入我们vue-router,然后在告诉vue我们要使用我们的vue-router
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App' Vue.use(VueRouter) /* eslint-disable no-new */
new Vue({
el: '#app',
template: '<App/>',
components: { App }
})
接下来我们开始使用,比如我们的首页我们是用我们的todo-items这个组件来处理
const routes=[
{path:'/',component:todoItems},
]
那么我们当然也要把它引用进来
import todoItem from './components/Todo-items'
接下来我们还要做一件事情就是访问一个todo跟上一个id
const routes=[
{path:'/',component:todoItem},
{path:'/todo/:id',component:Todo}
]
但是我们并没有todo这个组件所以创建一个toto的组件
<template> </template> <script>
export default {
data () {
return {
}
},
}
</script>
在main.js中也是要引用进来的
import Todo from './components/todo'
然后实例化我们的router
const router = new VueRouter({
routes
})
但是我们还要告诉的们vue我们要把router传递进去的
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
import todoItem from './components/Todo-items'
import Todo from './components/todo' Vue.use(VueRouter) const routes=[
{path:'/',component:todoItem},
{path:'/todo/:id',component:Todo,name:'todo'}
] const router = new VueRouter({
routes
})
/* eslint-disable no-new */
new Vue({
el: '#app',
template: '<App/>',
components: { App },
router
})
然后我们的视图内容交给我们router来处理,也就是我们在app.vue中的组件引用那块,不直接渲染
<template>
<div id="app">
<img src="./assets/logo.png">
<!-- <hello></hello> -->
<!-- <todo-item :todos="todos"></todo-item>
<todo-form :todos="todos"></todo-form> -->
<router-view :todos="todos"></router-view>
</div>
</template> <script>
import Hello from './components/Hello'
// import todoForm from './components/todo-form'
// import todoItem from './components/Todo-items' export default {
name: 'app',
data(){
return{
message:'this is todos',
todos:[
{id:1,title:"learn vuejs",completed:false},
],
}
},
computed:{
todoCount(){
return this.todos.length;
}
},
components: {
Hello
}
}
</script> <style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
但是这个时候我们的form并没有显示,那么我们就在首页的todoItem中引用这个子组件,script里面的代码
<script> import todoForm from './todo-form' export default {
name:'todos',
props:['todos'],
data(){
return {
newTodo:{id:null,title:"",completed:false}
}//定义一个obj;
},
props:['todos'],
methods:{
deleteTodo(index){
this.todos.splice(index,1);//删除下标为index的元素
},
toggleCompletion(todo){
todo.completed = !todo.completed;
}
},
components: {
todoForm
}
}
</script>
当然也要在template中引用这个组件
<template>
<div id="todos">
<ul class="list-group">
<li class="list-group-item" v-for="(todo,index) in todos" v-bind:class="{'completed' : todo.completed}">
<router-link :to="{ name: 'todo', params: { id:todo.id }}">{{todo.title}} </router-link>
<button class="btn btn-warning btn-xs pull-right" v-on:click="deleteTodo(index)">Delete</button>
<button class="btn btn-xs pull-right margin-right-10" v-on:click="toggleCompletion(todo)" v-bind:class="[todo.completed ? 'btn-success' : 'btn-danger']">{{todo.completed ? 'completed' : 'working'}}</button>
</li>
</ul> <todo-form :todos="todos"></todo-form>
</div>
</template> <script> import todoForm from './todo-form' export default {
name:'todos',
props:['todos'],
data(){
return {
newTodo:{id:null,title:"",completed:false}
}//定义一个obj;
},
props:['todos'],
methods:{
deleteTodo(index){
this.todos.splice(index,1);//删除下标为index的元素
},
toggleCompletion(todo){
todo.completed = !todo.completed;
}
},
components: {
todoForm
}
}
</script> <style>
.completed{
color: green;
font-style: italic;
}
.margin-right-10{
margin-right: 10px;
}
</style>
vuejs,router的更多相关文章
- weex官方demo weex-hackernews代码解读(下)
weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.而weex-hacknews则是weex官方出品的,首个使用 Weex 和 Vu ...
- 【vuejs小项目——vuejs2.0版本】单页面搭建
http://router.vuejs.org/zh-cn/essentials/nested-routes.html 使用嵌套路由开发,这里会出错主要把Vue.use(VueRouter);要进行引 ...
- Vuejs使用笔记 --- 框架
这两天学了vuejs的模板,于此纪录一下. 这是整个大文件夹的配置,现在我们看到的所有文件都不需要去管,说要关注也只需要关注“index.html” "index.html"里面是 ...
- VueJs一些资料网站链接
https://github.com/liukaijv/laravel-vue-cmshttps://github.com/allan2coder/VUE2-SPA-Tutorialhttps://g ...
- VueJs开发笔记—IDE选择和WebStorm性能优化、框架特性和数据调用、路由选项以及使用
一.IDE的选择: VsCode和WebStorm都是不错的选择,两者运行调试都非常的方便都可以使用快捷键运行和停止,就打开项目的速度和对电脑配置的要求来说,vscode要比webstorm要出色很多 ...
- Vuejs实例-01使用vue-cli脚手架搭建Vue.js项目
[TOC] 1. 前言 vue-cli 一个简单的构建Vue.js项目的命令行界面 整体过程: $ npm install -g vue-cli $ vue init webpack vue-admi ...
- vue初级学习--路由router的编写(resolve的使用)
一.导语 最近在用vue仿写淘宝的商品详情页面以及加入购物车页面,若是成功了,分享给大家~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 二.正文 我先用控制台创建了vue项目demo(如 ...
- 三、VueJs 填坑日记之项目文件认识
上一篇博文,我们搭建了一套基础的vuejs的环境,首先安装node.js,然后利用npm包管理器,安装vue-cli,设置淘宝镜像,初始化项目,安装依赖,运行.在这一篇,我们将认识vuejs项目里的各 ...
- 七、VueJs 填坑日记之渲染一个列表
在上一篇博文中,我们对vue组件有了一个简单的认识和大概的理解.在之前认识项目结构的时候,我们在/src目录中创建了一个components的文件夹,而今天就要用到了,这个文件夹的作用就是放置我们的自 ...
随机推荐
- C++ STL--stack/queue 的使用方法
1.stack stack 模板类的定义在<stack>头文件中.stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类 ...
- css中font-size的单位总结:px、em、pt
px:基于像素的单位.像素是一种有用的单位,因为在任何媒体上都可以保证一个像素的差别确实是可见的.em :一般用来测量长度的通用单位(例如元素周转的页边空白和填充),当用于指定字体大小时,em单位是指 ...
- Gensim LDA主题模型实验
本文利用gensim进行LDA主题模型实验,第一部分是基于前文的wiki语料,第二部分是基于Sogou新闻语料. 1. 基于wiki语料的LDA实验 上一文得到了wiki纯文本已分词语料 wiki.z ...
- dotproject 2.1.8 甘特图中文乱码解决
1.安装中文语言包 下载地址为http://www.dotproject.net/dpDownloads/Language_Packs/Chinese_Simplified_(GBK)/dotproj ...
- 用MFC如何对子对话框进行初始化
通常情况下,我们在创建子对话框的类时.cpp文件中并不会自动生成initdialog函数,但我们的很多操作都需要用到initdialog初始化函数,如果你直接在类的头文件中去定义一个初始化函数,然后在 ...
- php session的理解与使用
session学习参考链接:1.http://www.w3cschool.cn/php_sessions.html:2.http://php.net/manual/zh/book.session.ph ...
- 自执行函数与setTimeout结合计算
var v1=0,v2=0,v3=0; for(var i=1;i<=3;i++){ var i2=i; (function(){ ...
- [转]linux,windows 可执行文件(ELF、PE)
ELF (Executable Linkable Format)UNIX类操作系统中普遍采用的目标文件格式 . 首先要知道它有什么作用:工具接口标准委员会TIS已经将ELF作为运行在Intel32位架 ...
- centos安装sublime
在官网下载,tarball 下载链接 http://www.sublimetext.com/3 提示信息: Ubuntu 64 bit - also available as a ...
- ASP.NET Razor - C# 循环和数组
语句在循环中会被重复执行. For 循环 如果您需要重复执行相同的语句,您可以设定一个循环. 如果您知道要循环的次数,您可以使用 for 循环.这种类型的循环在向上计数或向下计数时特别有用: 实例 & ...