vue项目开发-1

Vue基本功能

表单绑定

  • 用 v-model 指令在表单 、 及 元素上创建双向数据绑定

    • 它会根据控件类型自动选取正确的方法来更新元素
    • 通过 JavaScript 在组件的 data 选项中声明初始值
  • 文本
    在这里插入图片描述

  • 多行文本
    在这里插入图片描述

  • model 指令的作用是将 input 元素 value 属性的值和创建的 Vue 对象中 value 的值 进行绑定

    • Vue 将这个值绑定后,在 input 中引起的 value 值变化就会实时反映到关联的 Vue 对象,所以引用的 {{ value }} 也会跟着变化
  • body当中使用v-model

		<div id="app">
			<input type="text" v-model="value" />
			<div>value的值是:{{ value }}</div>
		</div>
  • vue对象data属性指定元素
<script>
		var app = new Vue({
			el: '#app',
			data: function(){
				return {value: ""}
			}
		})
	</script>

事件绑定

  • body中使用v-on指令
		<div id="app">
...
			<input type="button" value="发送" v-on:click="send" />
		</div>
  • VUE对象中增加methods
		var app = new Vue({
...
			methods:{
				send: function(){
					alert("发送成功!")
					this.value = ''
				}
			}
		})

计算属性

  • 对于任何复杂逻辑,你都应当使用计算属性
    在这里插入图片描述

  • Vue 还可以根据绑定的数据做计算,然后引用计算的结果

    • 假设想实时统计输入的字数,可以在 Vue 对象里加上对 value 长度的计算值
  • 计算属性申明到 computed 对象里,这个对象的键是计算的结果,值是计算函数,这里计算了 value 的长度

    • 可以使用 this.count 引用计算结果,也可以在关联的模板中直接引用,和绑定的数据value的用法非常类似
  • div标签指定绑定变量

		<div id="app">
...
			<div>字数:{{ count }}</div>
		</div>
  • 实现computed对象,增加count属性
		var app = new Vue({
...
			computed:{ //计算属性
				count: function(){
					return this.value.length
				}
			}
		})

样式绑定

  • vue还可以动态地帮为元素绑定样式(class 属性)
    • 实现: input 中没有任何值输入,即 value 的值为空时,input 的边框为红色以提醒用户没有内容
      • 首先写一个简单的样式,样式通常写到 head 标签里,用 style 包裹
      • 然后将这个 empty 用于 input 的 class 属性,浏览器就会渲染对应的样式
    • vue会根据 empty 后的表达式 !count 的真假来判断 class 的值是否为 empty,如果为真(即 count = 0 的情况),则 class 的值为 empty,否则为空
  • head中添加style
	<head>
...
		<style>
			.empty {
				border-color: red;
			}
		</style>
	</head>
  • 使用v-bind绑定样式
<input type="text" v-bind:class="{empty: !count}" v-model="value" />
功能01:methods增加判断
methods:{
				send: function(){
					if(!this.count){
						alert("请输入内容!")
						return
					}
...
				}
			},

功能02:条件渲染
  • v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染
<h1 v-if="awesome">Vue is awesome!</h1>
  • v-else
<h1 v-if="awesome">Vue is awesome!</h1> 
<h1 v-else>Oh no 😢</h1>
  • v-else-if,顾名思义,充当 v-if 的“else-if 块”
  • 用 key 管理可复用的元素
    • 这两个元素是完全独立的,不要复用它们
      在这里插入图片描述
  • 条件渲染
		<div id="app">
...
			<div v-if="count">value的值是:{{ value }}</div>
		</div>

count非零的时候为真

项目实战

显示TODOS

  • 创建vue对象,指定data对象
<script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script>
<script>
	var app = new Vue({
		el: '#todo-app',
		data: function(){
			return {
				todos:[
					{id:0, title:'学习vue'},
					{id:1, title:'工作汇报'},
				]
			}
		}
	})
</script>

  • 修改li标签,使用v-for指令
  <ul>
    <li v-for="todo in todos" :key='todo.id'>
		<span>{{ todo.title }}</span>
...
    </li>

添加TODO

  • 实现 addTodo 方法
    • 方法声明在 Vue 对象的 methods 属性里
      • 生成一个新的 todo 对象,然后将其添加到 todos 列表里(使用push 方法把一个元素加入到数组的末尾),然后将用户的输入值清空
        • 注意 newTodoTitle 和输入框的 value 值是双向绑定的,任何一个值改变,相应的值都会跟着变
  • input输入
    • 双向绑定,获取用户输入
    • 绑定回车事件,调用函数
<input type="text" placeholder="添加 todo" v-model="newTodoTitle"
		@keyup.enter="addTodo"/>

  • vue对象,添加methods
<script>
	let id = 0
	var app = new Vue({
...
		data: function(){
			return {
				todos:[],
				newTodoTitle:'',
			}
		},
		methods:{
			addTodo:function(){
				this.todos.push({id: id++, title: this.newTodoTitle})
				this.newTodoTitle = ''
			}
		}
	})

功能03
methods:{
			addTodo:function(){
				if (this.newTodoTitle === ''){
					return
				}
...
功能04
  • 增加样式
...
  <style>
...
	.empty {
		border-color: red;
	}
...
  • 修改用户输入input
<div id="todo-app">
  <div>
...
    <input type="text" v-bind:class="{empty: emptyCheck}"
		placeholder="添加 todo" v-model="newTodoTitle"
		@keyup.enter="addTodo"/>
	<span v-if="emptyCheck" class="selected">请输入内容!</span>
...
  • Vue对象,增加emptyCheck计算属性,checkEmpty
<script>
	let id = 0
	var app = new Vue({
		el: '#todo-app',
		data: function(){
			return {
...
				checkEmpty: false,
...
		methods:{
			addTodo:function(){
				if (this.newTodoTitle === ''){
					this.checkEmpty = true;
					return
				}
...
				this.checkEmpty = false;
			}
		},
		computed:{ //计算属性
			emptyCheck: function(){
				return this.newTodoTitle.length === 0 && this.checkEmpty
			}
		}
...
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值