常和v-else连用,v-if:跟true,则这个dom被渲染,否则就渲染else
body>
<div id="app">
<p v-if="isOk">v-if为true就显示</p>//这一行显示
<p v-else>v-else显示的情况</p>//这一行不显示
</div>
<script type="text/javascript">
var app=new Vue({
el:'#app',
data:{
isOk:'true'
}
})
</script>
</body>
1
让dom节点显示,实际上是改变display属性
我是使用v-show指令的
v-for主要用来遍历,可以渲染列表,常用在标签,
标签
<div id="app">
<ul>
<li v-for="item in items">{{item}}</li>
</ul>
</div>
<script type="text/javascript">
var app=new Vue({
el:'#app',
data:{
items:[1,2,6,32,65,8]
}
})
</script>
(item,index) in items
其中index
是索引<div id="app">
<ul>
<li v-for="item in sortItem">{{item}}</li>
</ul>
</div>
<script type="text/javascript">
var app=new Vue({
el:'#app',
data:{
items:[1,2,6,32,65,8]
},
computed: {
sortItem:function(){
return this.items.sort(paixu)//这里传入自己定义的排序方法
}
}
}
);
function paixu(a,b){//自己定义的排序方法
return a-b;
}
</script>
<body>
<div id="app">
<ul>
<li v-for="student in students">{{student}}</li>
</ul>
</div>
<script type="text/javascript">
var app=new Vue({
el:'#app',
data:{
students:[
{name:'宫崎英高',age:34},
{name:'尾田',age:55},
{name:'jojo',age:12},
{name:'路德维希',age:89},
{name:'劳伦斯',age:3},
]
}
}
);
</script>
</body>
显示:
{ "name": "宫崎英高", "age": 34 }
{ "name": "尾田", "age": 55 }
{ "name": "jojo", "age": 12 }
{ "name": "路德维希", "age": 89 }
{ "name": "劳伦斯", "age": 3 }
有时候网速也比慢,或者js出错时,会出现显示{{message}}这种情况
{{message}}
监听DOM事件
比如:点击按钮,实现数字自动加1,此时监听鼠标点击事件
v-on:click可以简写成@click
<body>
<div id="app">
<p>{{count}}</p>
<button v-on:click="add">点我加1</button>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
count: 10
},
methods: {
add: function () {
this.count++
}
}
})
</script>
</body>
也可以监听键盘事件:比如点击enter键
代码实现了点击回车,数字自动加1
<body>
<div id="app">
<p>{{count}}</p>
<input type="text" v-on:keyup.enter="add">
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
count: 10
},
methods: {
add: function () {
this.count++
}
}
})
</script>
</body>
<body>
<div id="app">
<p>{{ message }}</p>
<input type="text" v-model="message">
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
message: 'very well good hunter'
}
})
</script>
</body>
修改data里的message,输入框也会随之改变;相反的,修改输入框内的信息,data里的message也会随之改变。这就是v-model双向绑定的作用
<body>
<div id="app">
<p>{{message}}</p>
<textarea v-model="message"></textarea>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
message: 'very well good hunter'
}
})
</script>
</body>
<body>
<div id="app">
<input type="radio" name="gender" value="man" v-model="picked">男
<input type="radio" name="gender" value="female" v-model="picked">女
你选择的是:{{picked}}
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
picked: ''
}
})
</script>
</body>
单选框中name
属性将多个选项设置进一组,value为你选择后的值
<body>
<div id="app">
<input type="checkbox" id="game" value="bloodborne" v-model="picked">血源诅咒
<input type="checkbox" id="game" value="monster hunter" v-model="picked">怪物猎人
<input type="checkbox" id="game" value="dark souls" v-model="picked">黑暗之魂
你选择的是:{{picked}}
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
picked: []
}
})
</script>
</body>
<body>
<div id="app">
<select v-model="picked">
<option value="请选择" disabled></option>
<option v-for="game in games">{{game}}</option>
</select>
你选择的是:{{picked}}
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
picked: [],
games: ['黑暗之魂', '怪物猎人', '血源诅咒']
}
})
</script>
</body>
将Vue结构体中的data与标签的属性绑定,可以使标签的属性动态变化
<body>
<div id="app">
<div v-bind:style="styleColor">v-bind绑定style</div>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
styleColor: {
color: 'green'
}
}
})
</script>
</body>
<body>
<div id="app">
<p v-pre>{{message}}</p>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
message: 'hello vue'
}
})
</script>
</body>
显示{{message}}
,而不是hello vue