Vue入门到TodoList练手
学习资料
基础语法
示例代码1
<div id="root">
<h1>hello {{msg}}</h1>
</div>
<script>
new Vue({
el: "#root",
template: '<h1>hello {{msg}}</h1>',
data: {
msg: "world"
}
})
</script>
挂载点:vue实例绑定的dom节点
模板:挂载点输出的内容,可以直接在挂载点内部编写,也可以通过template属性实现。
示例代码1中div标签内部的
<h1>hello {{msg}}</h1>和vue中的template: '<h1>hello {{msg}}</h1>'效果一致
实例: 指定挂载点、指定模板、绑定数据后可以自动结合模板、数据生成最终要展示的内容,并放到挂载点之中
插值表达式:两个花括号包裹一个变量
{{msg}} 就是一个插值表达式
示例代码2
<div id="root">
<div v-html="msg" v-on:click="handleClick"></div>
</div>
<script>
new Vue({
el: "#root",
data: {
msg: "<h1>hello</h1>"
},
methods: {
handleClick: function () {
this.msg = 'world'
}
}
})
</script>
指令
v-html: 以html格式解析变量v-text: 以文本格式输出变量v-on: 事件绑定,简写为@v-bind: 属性绑定,简写为:v-model: 双向数据绑定v-if: 不符合条件时整个元素dom都清除,符合条件时再重新创建该domv-show: 不符合条件时,dom元素增加display:nonecss属性,v-for: 用法(item, index) in/of list,item是元素列表每个元素值,index是每个元素的索引值
事件
click就是一个点击事件, v-on:click表示绑定一个点击事件,简写方式为@click
示例代码3
<div id='app'>
<h1 v-html='msg' v-on:click='handleClick' v-bind:title='title1'></h1>
<input v-model='content'/>
<div>{{content}}</div>
</div>
<script>
new Vue({
el: "#app",
data: {
msg: 'hello world',
title1: 'this is a title',
content: 'this is content'
},
methods: {
handleClick: function () {
this.msg = 'ready to learn'
}
}
})
</script>
双向数据绑定: 当页面数据变化时,变量的值也会同时变化
示例代码4
<div id='app'>
姓 <input v-model="firstName">
名 <input v-model="lastName">
<div>{{fullName}}</div>
</div>
<script>
new Vue({
el: "#app",
data: {
firstName: '',
lastName: '',
},
// 计算属性
computed: {
fullName : function () {
return this.firstName + ' ' + this.lastName
}
},
// 侦听器
watch: {
firstName: function () {
this.count ++
},
lastName: function () {
this.count ++
},
//等价于
fullName: function () {
this.count ++
},
}
})
</script>
计算属性: 一个属性的值是通过其他属性计算得来
侦听器: 监听一个属性的变化后进行数据处理
示例代码5
<input v-model="todo"/>
<button @click="submit">提交</button>
<div v-for="(item, index) in todoList" :key="index" v-model="todoList">
<input type="checkbox" /> {{item}}
</div>
</div>
<script>
new Vue({
el: "#app",
data: {
todo: '',
todoList: []
},
methods: {
submit: function () {
this.todoList.push(this.todo)
this.todo = ''
}
},
})
</script>
效果图

- 给列表增加元素:
push()
组件
页面中的某一部分
全局组件: 在挂载点中可以直接使用
Vue.component('todo-item', {
template: "<li>item</li>"
})
局部组件: 需要在实例中声明才能在挂载点中使用
var TodoItem = {
template: "<li>item</li>"
}
new Vue({
// ...
// 注册局部组件
components: {
'todo-item': todoItem
},
// ...
})
组件传值: 接收外部传递的属性值
外部传值
<todo-item v-for="(item, index) in todoList" :key="index" :content="item"></todo-item>
组件接收
Vue.component('todo-item', {
props: ["content"],
template: "<li>{{content}}</li>"
})
父子组件通信:
子组件=>父组件:子组件通过发布订阅模式,向父组件传递数据
父组件=>子组件:父组件的模板中增加属性,子组件中接收属性
父组件的模板中使用子组件模板:
<!-- @delete="checkout"用于订阅子组件的delete事件,并触发父组件的checkout方法-->
<todo-item
v-for="(item, index) in todoList"
:key="index"
:content="item"
:index="index"
@delete="checkout"
></todo-item>
子组件:
Vue.component('todo-item', {
// 接收属性值
props: ["content", "index"],
template: "<li @click='checkout'>{{content}}</li>",
methods: {
// 子组件模板中的checkout事件
checkout: function () {
// 发布订阅模式, 发布delete事件
this.$emit('delete', this.index)
}
}
})
父组件:
new Vue({
el: "#app",
data: {
todo: '',
todoList: []
},
methods: {
submit: function () {
this.todoList.push(this.todo)
this.todo = ''
},
checkout: function (index) {
this.todoList.splice(index, 1)
}
},
})
Vue入门到TodoList练手的更多相关文章
- vue 入门, todoList
# 实现逻辑: > * 技术栈> 1. 生命周期,creatd( 创建后执行)> 2. methods': 调用事件方法,结果不会缓存> 3. Watch : 监听器,监听输 ...
- Python入门、练手、视频资源汇总,拿走别客气!
摘要:为方便朋友,重新整理汇总,内容包括长期必备.入门教程.练手项目.学习视频. 一.长期必备. 1. StackOverflow,是疑难解答.bug排除必备网站,任何编程问题请第一时间到此网站查找. ...
- Vue练手项目(包含typescript版本)
本项目的git仓库https://github.com/lznism/xiachufang-vue 对应的使用typescript实现的版本地址https://github.com/lznism/xi ...
- 微信小程序初体验,入门练手项目--通讯录,部署上线(二)
接上一篇<微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器>:https://www.cnblogs.com/chengxs/p/9898670.html 开发微信小程序最尴尬 ...
- 微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器(一)
内容: 一.前言 二.相关概念 三.开始工作 四.启动项目起来 五.项目结构 六.设计理念 七.路由 八.部署线上后端服务 同步交流学习社区: https://www.mwcxs.top/page/4 ...
- 推荐:一个适合于Python新手的入门练手项目
随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...
- 一个vue练手的小项目
编程路上的菜鸟一枚 : 最近接触了vue 然后写了一个练手的项目 使用vue-cli脚手架来搭建了的项目 技术: vue2 + vue-router + ES6 + axios 框架有 mint- ...
- Xamarin入门,开发一个简单的练手APP
之前周末用Xamarin练手做了个简单APP,没有啥逻辑基本就是个界面架子,MVVM的简单使用,还有Binding,Command的简单使用,还有一个稍微复杂点两个界面交互处理(子页面新增后关闭,父页 ...
- Vue入门 — Vue + vuetifyjs应用实践
分享一个以前学vue时自己练手的一个小项目,项目使用vue-cli3创建,UI库用的是vuetifyjs,vuetifyjs官网:https://vuetifyjs.com/ 数据来源是网上随便找的一 ...
随机推荐
- http面试笔试常考知识点(一)
1.什么是http HTTP是客户端和服务器端请求和应答的标准.通过使用Web浏览器.网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求.(我们称这个客户端)叫用 ...
- C#3.0新增功能09 LINQ 基础02 LINQ 查询简介
连载目录 [已更新最新开发文章,点击查看详细] 查询 是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据 ...
- [剑指offer] 34. 第一个只出现一次的字符
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 一次遍历存储到哈希表 一次 ...
- 2019牛客多校第一场A-Equivalent Prefixes
Equivalent Prefixes 传送门 解题思路 先用单调栈求出两个序列中每一个数左边第一个小于自己的数的下标, 存入a[], b[].然后按照1~n的顺序循环,比较 a[i]和b[i]是否相 ...
- python编码问题——解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
python实现爬虫遇到编码问题: error:UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX ...
- Core CLR Host 源码简单分析
在定制 CLR Host的时候,可以通过调用如下代码,来获取当前需要被宿主的程序调用入口: hr = Host->CreateDelegate( domainId, L"Main,Ve ...
- UE4 代理 BindRaw和BindUObject
代理允许您在C++对象上以通用的但类型安全的方式调用成员函数.通过使用代理,可以将其动态地绑定到任何对象的成员函数上,然后在该对象上调用函数,即时调用者不知道该对象的类型也没关系. 任何时候都应该通过 ...
- Github上fork的项目如何merge原Git项目
问题场景 小明在Github上fork了一个大佬的项目,并clone到本地开发一段时间,再提交merge request到原Git项目,过了段时间,原作者联系小明,扔给他下面这幅截图并告知合并处理冲突 ...
- Java NIO学习系列七:Path、Files、AsynchronousFileChannel
相对于标准Java IO中通过File来指向文件和目录,Java NIO中提供了更丰富的类来支持对文件和目录的操作,不仅仅支持更多操作,还支持诸如异步读写等特性,本文我们就来学习一些Java NIO提 ...
- 夯实Java基础(九)——final关键字
1.前言 Java语言中的final关键字,想必大家都不是很陌生,我们自己用的最多的应该是用来定义常量吧,那么今天我们就来了解final这个关键字的用法,这个关键字还是非常简单的. final从字面意 ...