Vue.js第一天学习笔记(数据的双向绑定、常用指令)


Posted in Javascript onDecember 01, 2016

数据的双向绑定(ES6写法)

 效果:

没有改变 input 框里面的值时:

Vue.js第一天学习笔记(数据的双向绑定、常用指令)

将input 框里面的值清空时:

Vue.js第一天学习笔记(数据的双向绑定、常用指令)

重新给  input 框输入  豆豆 后页面中  span  里绑定{{testData.name}}的值随着 input 框值的变化而变化.

Vue.js第一天学习笔记(数据的双向绑定、常用指令)

在Vue.js中可以使用v-model指令在表单元素上创建双向数据绑定。并且v-model指令只能用于:<input>、<select>、<textarea>这三种标签。

<template>
<div>
 <div class="form-inline mg-top">
  <div class="form-group">
   <label class="control-label">姓名:</label>
   <input type="text" v-model='testData.name' class="form-control">
   <span class="control-span">姓名变为:{{testData.name}}</span>
  </div>
 </div>
</div>
</template>


<script>
export default {
 components: {
 },
 ready: function(){
 },
 methods: {
 },
 data() {
 return {
  testData:{
  id:'1',
  name:'张三',
  age:'18'
  }
 }
 }
}
</script>

Vue.js的组件可以理解为预先定义好了行为的ViewModel类。一个组件可以预定义很多选项,但最核心的是以下几个:

模板(template):模板声明了数据和最终展现给用户的DOM之间的映射关系。
注册组件(components):注册之后即可在父组件模板中以自定义元素的形式调用一个子组件。
初始数据(data):一个组件的初始数据状态。对于可复用的组件来说,这通常是私有的状态。
接受的外部参数(props):组件之间通过参数来进行数据的传递和共享。参数默认是单向绑定(由上至下),但也可以显式地声明为双向绑定。
方法(methods):对数据的改动操作一般都在组件的方法内进行。可以通过v-on指令将用户输入事件和组件方法进行绑定。
生命周期钩子函数(lifecycle hooks):一个组件会触发多个生命周期钩子函数,比如created,attached,destroyed等等。在这些钩子函数中,我们可以封装一 些自定义的逻辑。和传统的MVC相比,可以理解为 Controller的逻辑被分散到了这些钩子函数中。
私有资源(assets):Vue.js当中
将用户自定义的指令、过滤器、组件等统称为资源。由于全局注册资源容易导致命名冲突,一个组件可以声明自己的私有资源。私有资源只有该组件和它的子组件可以调用。

常用指令:

所谓 指令 ,其实本质就是在模板中出现的特殊标记,根据这些标记让框架知道需要对这里的 DOM 元素进行什么操作。

常用指令:

  • v-if指令
  • v-show指令
  • v-else指令
  • v-for指令
  • v-bind指令
  • v-on指令

v-if指令:

v-if根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。如果元素是 <template>,将提出它的内容作为条件块。

labelShowFlag是一个返回bool值的表达式,表达式可以是一个bool属性,也可以是一个返回bool的运算式。

Vue.js第一天学习笔记(数据的双向绑定、常用指令)

html:

<label class="control-label" v-if='labelShowFlag'>喵嘞个咪</label>
<label class="control-label" v-if="testData.name=='张三'" >张三</label>

js:

<script>
export default {
 components: {
 },
 ready: function(){
 },
 methods: {
 },
 data() {
 return {
  labelShowFlag:true,
  testData:{
  id:'1',
  name:'张三',
  age:'18'
  }
 }
 }
}
</script>

v-show指令:

v-show也是条件渲染指令,和v-if指令不同的是,使用v-show指令的元素始终会被渲染到HTML,v-show 只是简单的切换元素的 CSS 属性 display。

Vue.js第一天学习笔记(数据的双向绑定、常用指令)

Vue.js第一天学习笔记(数据的双向绑定、常用指令)

html:

<label class="control-label" v-show='labelShowFlag'>喵嘞个咪</label>
<label class="control-label" v-show="testData.name=='张三'" >张三</label>

 js:

<script>
export default {
 components: {
 },
 ready: function(){
 },
 methods: {
 },
 data() {
 return {
  labelShowFlag:true,
  testData:{
  id:'1',
  name:'张三',
  age:'18'
  }
 }
 }
}
</script>

v-else指令:

可以用 v-else 指令给 v-if 或 v-show 添加一个 “else 块”,并且v-else 元素必须立即跟在 v-if 或 v-show 元素的后面——否则它不能被识别。

<label class="control-label" v-if='labelShowFlag'>喵嘞个咪</label>
<label class="control-label" v-if="testData.name=='张三'" >张三</label>
<label class="control-label" v-else>不是张三</label>

 v-for指令:

可以使用 v-for 指令基于一个数组渲染一个列表。这个指令使用特殊的语法,形式为 item in items,items 是数据数组,item 是当前数组元素的别名:

Vue.js第一天学习笔记(数据的双向绑定、常用指令)

html:

<ul>
 <li v-for="item in items">
 {{ item.message }}
 </li>
</ul>

 js:

<script>
export default {
 components: {
 },
 ready: function(){
 },
 methods: {
 },
 data() {
 return {
  labelShowFlag:true,
  testData:{
  id:'1',
  name:'张三',
  age:'18'
  },
  items: [{
  message: '豆豆'
  }, {
  message: '毛毛'
  }],
 }
 }
}
</script>

v-bind指令:

v-bind 指令用于响应地更新 HTML 特性 形式如:v-bind:class

html:

<label class="control-label" v-bind:class="{'pink-label': labelShowFlag}" >我是粉色的</label>
<label class="control-label">默认</label>

v-on指令:

v-on 指令用于监听DOM事件 形式如:v-on:click  缩写为 @click;

html:

<input type="button" class="form-control btn btn-primary" value="提交" @click='saveFun'>

js:

<script>
export default {
 components: {
 },
 ready: function(){
 },
 methods: {
 saveFun:function(){
  alert('提交');
 }
 },
 data() {
 return {
  labelShowFlag:true,
  testData:{
  id:'1',
  name:'张三',
  age:'18'
  },
  items: [{
  message: '豆豆'
  }, {
  message: '毛毛'
  }],
 }
 }
}
</script>

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
[原创]保存的js无法执行的解决办法
Feb 25 Javascript
Jquery ThickBox插件使用心得(不建议使用)
Sep 08 Javascript
js中substring和substr的详细介绍与用法
Aug 29 Javascript
Javascript 绘制 sin 曲线过程附图
Aug 21 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
Apr 17 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
Oct 30 Javascript
jQuery获取父元素及父节点的方法小结
Apr 14 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
Vue.js 父子组件通信的十种方式
Oct 30 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
Node.js之删除文件夹(含递归删除)代码实例
Sep 09 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 #Javascript
有趣的bootstrap走动进度条
Dec 01 #Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 #Javascript
第一次接触神奇的前端框架vue.js
Dec 01 #Javascript
bootstrapValidator自定验证方法写法
Dec 01 #Javascript
jQuery生成假加载动画效果
Dec 01 #Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 #Javascript
You might like
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
php获取apk包信息的方法
2014/08/15 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
浅析php工厂模式
2014/11/25 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
发布你的Python模块详解
2016/09/15 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
联想德国官网:Lenovo Germany
2018/07/04 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
初二政治教学反思
2014/01/12 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
Python Django模型详解
2021/10/05 Python