当前位置: 首页 > news >正文

Vue.js-Day01

本来是准备学习angular的,但是总是卡在开头看不下去,干脆换个框架,那就vue吧!
使用jquery要引入特定的库,那使用vue也类似,可以在头部引入

<script src="https://unpkg.com/vue/dist/vue.js"></script>

我觉得vue最重要的理念就是将值和DOM绑定在一起,将数据渲染进DOM有以下几种方式:


1.文本插值

<div id="app">
      {{ message }}
</div>
    
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})


2.绑定在标签上

<div id="app-2">
  <span v-bind:title="message">
    鼠标悬停几秒钟查看此处动态绑定的提示信息!
  </span>
</div>

var app2 = new Vue({
  el: '#app-2',
  data: {
    message: '页面加载于 ' + new Date()
  }
})

这里类似v-bind的属性称之为(vue的)指令,该指令的作用是:“将这个元素节点的 title 属性和 Vue 实例的 message 属性保持一致”。


处理数据时,经常会用到if判断和循环,在vue里面也有这些应用

1.条件判断

<div id="app-3">
  <p v-if="seen">现在你看到我了</p>
</div>

var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true
  }
})

2.循环

<div id="app-4">
  <ol>
    <li v-for="todo in todos">
      {{ todo.text }}
    </li>
  </ol>
</div>

var app4 = new Vue({
  el: '#app-4',
  data: {
    todos: [
      { text: '学习 JavaScript' },
      { text: '学习 Vue' },
      { text: '整个牛项目' }
    ]
  }
})

我们还可以给DOM绑定一个调用 Vue 实例方法的事件监听器:

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">逆转消息</button>
</div>

var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

双向数据绑定

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>

var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})

组件
在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例,在 Vue 中注册组件很简单:

// 定义名为 todo-item 的新组件
Vue.component('todo-item', {
  template: '<li>这是个待办项</li>'
})

现在你可以用它构建另一个组件模板:

<ol>
  <!-- 创建一个 todo-item 组件的实例 -->
  <todo-item></todo-item>
</ol>

但是这样会为每个待办项渲染同样的文本,这看起来并不炫酷,我们应该能将数据从父作用域传到子组件。让我们来修改一下组件的定义,使之能够接受一个属性:

Vue.component('todo-item', {
  // todo-item 组件现在接受一个
  // "prop",类似于一个自定义属性
  // 这个属性名为 todo。
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})

现在,我们可以使用 v-bind 指令将待办项传到每一个重复的组件中:

<div id="app-7">
  <ol>
    <!-- 现在我们为每个todo-item提供待办项对象    -->
    <!-- 待办项对象是变量,即其内容可以是动态的 -->
    <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
  </ol>
</div>

Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})
var app7 = new Vue({
  el: '#app-7',
  data: {
    groceryList: [
      { text: '蔬菜' },
      { text: '奶酪' },
      { text: '随便其他什么人吃的东西' }
    ]
  }
})

相关文章:

  • XSS跨站脚本***问题和原理详解
  • Project Euler Problem 92 Square digit chains
  • SCOI2010第一场
  • 关键词过滤算法【转】
  • easyui toopTip,鼠标划过悬浮,显示一个小提示框的方法
  • spring 事物的一些理解
  • FMDB支持的事务类型
  • 自动化安装Mysql5.6-脚本实现
  • Java 反射解析指定jar包出现ClassNotFoundException异常,处理方式
  • 通过Adobe Encode CC 2017,将一张静态图生成一个长时间的视频。
  • centos7-msyql-慢查询优化
  • centos7-mysql-分表
  • python初学之魔法方法1
  • 50G存储-免费代码托管工具公测上线
  • 学习LaTex
  • 网络传输文件的问题
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • avalon2.2的VM生成过程
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • canvas绘制圆角头像
  • Cookie 在前端中的实践
  • CSS 提示工具(Tooltip)
  • JavaScript 奇技淫巧
  • Mac转Windows的拯救指南
  • Mysql优化
  • PAT A1092
  • Tornado学习笔记(1)
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • uni-app项目数字滚动
  • use Google search engine
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 七牛云假注销小指南
  • 深度学习在携程攻略社区的应用
  • 使用agvtool更改app version/build
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 原生Ajax
  • 【云吞铺子】性能抖动剖析(二)
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #WEB前端(HTML属性)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (a /b)*c的值
  • (pojstep1.1.2)2654(直叙式模拟)
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)Eureka服务搭建,服务注册,服务发现
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)平衡树
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET 8.0 中有哪些新的变化?
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Framework .NET Core与 .NET 的区别
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 命令行参数包含应用程序路径吗?