<div id="app">
<div>{{msg}}</div> <!-- 1.提供标签用于填充数据 插值表达式-->
<div>{{1+2}}</div>
<div>{{msg+'----'+'123'}}</div>
</div>
<script type="text/javascript" src="js/vue.js"></script> <!-- 2.引入 vue.js 库文件 -->
<script type="text/javascript">
var vm = new Vue({ // 3.使用 vue语法做功能
el:'#app',
// el:告诉vue,你要把这个数据填充到什么位置
// #app:严格的id选择器
data: { // data:用于提供数据
msg:'hello vue'
}
}); //用于存储vue的实例
</script>
将数据填充到HTML标签中
支持基本的运算 (加减拼凑···都可以
把数据填充到HTML标签中。
原理 :先通过样式隐藏 再替换 替换好了再显示出来
[v-cloak] {
display: none;
}
<div v-cloak>{{msg}}</div>
<div v-text='msg'></div>
<div v-html='msg'></div> <!-- msg:'<h1>html</h1>' -->
后续信息不需要再修改 有助于提高性能
就是在控制器中 使用vm.msg可以改变页面中msg的值 但是如果给他加上v-once就只能是他最初编译出来的 不能再修好了
数据的变化导致页面内容的变化
<div id="app">
<div>{{msg}}</div>
<div>
<input type="text" v-model='msg'> <!-- 页面影响数据 通过修改input中的值 可以直接影响到上面插值表达式中的值 -->
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
msg:'hello'
}
});
</script>
model数据
view视图 模板 dom
View-Model 结合
cn.vuejs.org/v2/api/#v-o…
<button v-on:click='num++'>{{num}}</button>
<button @click='num++'>{{num}}</button>
函数形式
<div id="app">
<div>
<button v-on:click='handle'>{{num}}</button>
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
num: 0
},
methods: {
handle: function() {
this.num++; // this是vue的实例对象
}
}
});
</script>
接收事件对象
$event
<div id="app">
<div>
<button v-on:click='handle(123, $event)'>{{num}}</button>
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
num: 0
},
methods: {
handle: function(a, event) {
console.log(a); // 123
console.log(event.target.tagName); // BUTTON
console.log(event.target.innerHTML); // 0
this.num++; // this是vue的实例对象
}
}
});
@click.stop
<div id="app">
<div>{{num}}</div>
<div @click='handle0()'>
<button @click.stop='handle1()'>点击1</button>
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
num: 0
},
methods: {
handle0: function() {
this.num++;
},
handle1: function() {
}
}
});
</script>
.prevent
<a href="http://www.baidu.com" v-on:click.prevent='handle2'>百度</a> <!-- 阻止跳转 -->
cn.vuejs.org/v2/guide/ev…
@keyup.enter
<div id="app">
<div>
用户名:<input @keyup.enter='handle1' v-model='name'>
<button @click='handle1'>点击1</button>
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
name: ''
},
methods: {
handle1: function() {
console.log(this.name);
}
}
});
删除键 @keyup.delete
自定义按键修饰符 Vue.config.keys.f1=112
<div id="app">
<div>
用户名:<input @keyup='handle1' v-model='name'>
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
name: ''
},
methods: {
handle1: function(event) {
console.log(event.keyCode);
}
}
});
</script>
<a v-bind:href='url'>跳转</a>
<a :href='url'>跳转</a>
双向数据绑定的三种不同形式
<input type="text" v-bind:value="msg" v-on:input="handle">
<!-- handel:function(event) {
this.msg = event.target.value;
} -->
<input type="text" v-bind:value="msg" v-on:input="msg=$event.target.value">
<input type="text" v-model="msg">
对象
<style>
.active {
height: 100px;
width: 150px;
background-color:blueviolet;
}
.error {
border:coral 2px solid;
}
</style>
</head>
<div id="app">
<div>
<div :class="{active: isActive, error: isError}"></div>
<button @click="handle">点击</button>
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
isActive: true,
isError: true
},
methods: {
handle: function() {
this.isActive = !this.isActive; // 使isActive的值在true flase之间跳动
this.isError = !this.isError;
}
}
});
</script>
数组
<style>
.active {
height: 100px;
width: 150px;
background-color:blueviolet;
}
.error {
border:coral 2px solid;
}
</style>
</head>
<div id="app">
<div>
<div :class="[activeClass, errorClass]"></div>
<button @click="handle">点击</button>
</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data: {
activeClass: 'active',
errorClass: 'error'
},
methods: {
handle: function() {
this.activeClass = '',
this.errorClass = ''
}
}
});
</script>
二者可以结合
可以简化操作
arrClasses: ['active', 'error']
arrClasses: {
active: true,
error: true
}
默认class会保留
<div v-bind:style='{border: borderStyle, width: widthStyle, height: heightStyle}'></div>
<div id="app">
<div v-bind:style='objStyles'></div> <!-- 对象 -->
<div v-bind:style='[objStyles, overrideStyles]'></div> <!-- 数组 -->
<button v-on:click='handle'>切换</button>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data: {
borderStyle: '1px solid blue',
widthStyle: '100px',
heightStyle: '200px',
objStyles: {
border: '1px solid green',
width: '200px',
height: '100px'
},
overrideStyles: {
border: '5px solid orange',
backgroundColor: 'blue'
}
},
methods: {
handle: function(){
this.heightStyle = '100px';
this.objStyles.width = '100px';
}
}
});
</script>
<div v-if=' score >= 90 '>优秀</div>
<div v-else-if='score<90 && score>=80'>一般</div>
<div v-else>较差</div>
即使没有显示但也渲染到了页面
变化频繁选择这个
<div v-show='flag'>较差</div> <!-- flag: true -->
<div id="app">
<div>水果列表</div>
<ul>
<li v-for='item in fruits'>{{item}}</li> <!-- 关键字 in 属性名 -->
<li v-for='(item, index) in fruits'>{{item + '---' + index}}</li> <!-- 关键字+索引 in 属性名 -->
<li v-for='item in myFruits'>
<span>{{item.ename}}</span>
<span>{{item.cname}}</span>
</li>
</ul>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data: {
fruits: ['apple', 'banana', 'orange'],
myFruits: [{
ename: 'apple',
cname: '苹果'
},
{
ename: 'banana',
cname: '香蕉'
},
{
ename: 'orange',
cname: '橘子'
},]
}
});
</script>
给data
里面每个对象加id
再用:key = item.id
<div id="app">
<div v-for='(v, k, i) in obj'>{{v + '---' + k + '---' + i}}</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data: {
obj: {
uname: 'x52',
age: '20',
sex: 'male'
}
}
});
<div v-for='(v, k, i) in obj' v-if='v == 13'>{{v + '---' + k + '---' + i}}</div>
上一篇:01背包问题
下一篇:1.OkHttp源码解析