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

Vue.js简介及指令

1.Vue.js的特点
Vue.js是一个Javascript MVVM(Model-View-ViewModel)库,与传统Jquery的区别在于,Vue.js舍弃了繁杂的DOM操作,
如取DOM值$('#id1').val(),赋DOM值$('#id1').val('hello')
Vue.js DOM和Model通过ViewModel来实现关联,
ViewModel是Vue.js的核心,主要有两个事件DOM Listeners和Data Bindings
DOM Listeners:监听DOM值,变化时,更新Model对应值
Data Bindings:当Model对应值改变时,同步绑定到View
原理图如下:
300946-20180125192502303-171263107.png

2.Vue.js使用示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--view-->
    <span id="myview">{{ message }}</span>
</body>
<script src="js/vue.js"></script>
<script>
    // model
    var mymodel = {
            message: 'Hello World!'
        }

    //ViewModel
    new Vue({
        el: '#myview',
        data: mymodel
    })
</script>
</html>

运行结果:
300946-20180125192518194-110987910.png

代码分析:
mymodel:model数据层
v-model="message":view视图层,v-model定义了对应的model中的字段
new Vue({}):定义了view层元素id作用域内,对应的model

3.双向绑定示例
有Vue.js的原理,可知当View值改变时,对应的Model值也会变化;当Model值变化时, View值也会发生变化。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--view-->
    <input type="text" id="myview" v-model="message">
</body>
<script src="js/vue.js"></script>
<script>
    // model
    var mymodel = {
            message: 'Hello World!'
        }

    //ViewModel
    new Vue({
        el: '#myview',
        data: mymodel
    })
</script>
</html>

300946-20180125192705944-424749565.png

4.Vue.js常用指令
v-if:判断指令
v-show:显示隐藏指令
v-else:判断指令(必须紧跟v-if,v-show使用)
v-for:循环指令
v-bind:绑定class指令
v-on:绑定事件指令

5.Vue.js指令使用示例
1)v-if,v-else

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="my_info">
        <span v-if="score>=9">popular language</span>
        <span v-else>fewer language</span>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    // model
    var mymodel = {
            score: 8
        }

    //ViewModel
    new Vue({
        el: '#my_info',
        data: mymodel
    })
</script>
</html>

运行结果:
300946-20180125192720272-1431478917.png

v-if="score>=9":v-if后接表达式
2)v-show,v-else
v-show表示display:block,display:none
3)v-for

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table id="my_info">
        <tr>
            <th>name</th>
            <th>score</th>
        </tr>
        <tr v-for="language in languages">
            <td>{{ language.name }}</td>
            <td>{{ language.score }}</td>
        </tr>
    </table>
</body>
<script src="js/vue.js"></script>
<script>
    //ViewModel
    new Vue({
        el: '#my_info',
        data: {
            languages:[{
                name: 'C',
                score: 9
            },{
                name: 'Python',
                score: 8.5
            },{
                name: 'Java',
                score: 7
            }]
        }
    })
</script>
</html>

运行结果:
300946-20180125192734006-481827306.png

4)v-bind,v-on
styles/index.css

.pagination li{
    display: inline;
}

.pagination li a{
    padding:6px 12px;
    background-color: #fff;
    border:1px solid #ddd;
    text-decoration: none;
    margin-left: -1px;
    color: #009a61;
}
.pagination .active{
    background-color: #009a61;
    color: #fff;
}

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="styles/index.css" />
</head>
<body>
    <div id="my_info">
        <ul class="pagination">
            <li v-for="n in pagecount">
                <a href="javascript:void(0)" v-on:click="onpage(n+1)" v-bind:class="pagenum===n+1?'active':''">
                    {{ n+1 }}
                </a>
            </li>
        </ul>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    //ViewModel
    new Vue({
        el: '#my_info',
        data: {
            pagenum: 1,
            pagecount: 10
        },
        methods: {
            onpage: function (index) {
                this.pagenum = index;
            }
        }
    })
</script>
</html>

运行结果:
300946-20180125192747397-85636200.png

el:绑定的view
data:model属性
methods:model方法

v-bind:class="pagenum===n+1?'active':''"
model的pagenum属性对应的值和索引一直,设置样式class为active

v-on:click="onpage(n+1)"
view绑定方法,click时执行model的onpage方法

相关文章:

  • 全面分析 Spring 的编程式事务管理及声明式事务管理
  • jeesite优化
  • 统计数据库大小的方法
  • 带你走进单片机的世界——初始MCU
  • Jenkins2.32打包Unity项目的记录
  • 约瑟夫环数组简单实现
  • Python中元组、列表、字典的遍历和相互转化
  • CentOS 7安装JDK
  • Linux- 关于windows和Linux和Mac的换行符
  • 免费「模拟面试」福利反馈连载(20180128期)
  • centos7 内存硬件信息检测
  • Redis的并发竞争问题的解决方案总结
  • Linux 更换成阿里云的源 yum
  • 将打开的网页以html格式下载到本地
  • wxPython,线程中修改UI的方法
  • [译]Python中的类属性与实例属性的区别
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • __proto__ 和 prototype的关系
  • Android开源项目规范总结
  • CentOS6 编译安装 redis-3.2.3
  • export和import的用法总结
  • Javascript弹出层-初探
  • Logstash 参考指南(目录)
  • markdown编辑器简评
  • Promise面试题,控制异步流程
  • Python学习之路16-使用API
  • scala基础语法(二)
  • 程序员该如何有效的找工作?
  • 初识MongoDB分片
  • 基于组件的设计工作流与界面抽象
  • 简单实现一个textarea自适应高度
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 深度学习在携程攻略社区的应用
  • 小程序开发之路(一)
  • 正则与JS中的正则
  • Java性能优化之JVM GC(垃圾回收机制)
  • # Panda3d 碰撞检测系统介绍
  • (003)SlickEdit Unity的补全
  • (BFS)hdoj2377-Bus Pass
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (补)B+树一些思想
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (译) 函数式 JS #1:简介
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)项目管理杂谈-我所期望的新人
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net Web项目创建比较不错的参考文章
  • .net 获取url的方法
  • .NET 设计一套高性能的弱事件机制
  • .net6Api后台+uniapp导出Excel
  • @AutoConfigurationPackage的使用