在使用插值表达式{{ }}取data中list数组中的值时把整个表达式当做文本显示了,原因不明,但是使用v-text替换插值表达式之后问题得到解决.
原因已经查明,因为第78行,定义对象car时后面不小心加了个逗号,导致对象读取出现问题,前面的插值表达式读不到相应的数据所以把整个表达式当做文本显示.
var car = { id:this.id , name:this.name , ctime:new Date()},
//万恶的逗号
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<title>Document</title>
<script src="lib/vue-2.4.0.js"></script>
<link rel="stylesheet" type="text/css" href="lib/bootstrap-3.3.7.css"/>
<!-- 需要用到JQuery吗? -->
<!-- JQuery本质是使用js进行查询,是对dom的操作,而在Vue中尽量避免对dom进行操作 -->
</head>
<body>
<div id="app"> <div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">添加品牌</h3>
</div>
<div class="panel-body form-inline">
<label>
ID:
<input type="text" class="form-control" v-model="id"/>
<!-- 这里的id是data中的id,不是list中的id -->
</label>
<label>
Name:
<input type="text" class="form-control" v-model="name"/>
<!-- 这里的name是data中的name,不是list中的name -->
</label>
<!-- 在Vue中使用事件绑定机制,为元素制定处理函数时,如果加了小括号,就可以给函数传参了 -->
<input type="button" value="添加" class="btn btn-primary" @click="add()"/>
</div> </div> <table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Ctime</th>
<th>Operation</th>
</tr>
</thead>
<tbody>
<tr v-for="item in list" :key="item.id">
<td v-text="item.id"></td>
<td v-text="item.name"></td>
<td v-text="item.ctime"></td>
<td>
<a href="">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
id:'',
name:'',
list:[
{ id:1 , name: '奔驰' , ctime: new Date() },
{ id:2 , name: '宝马' , ctime: new Date() },
]
},
methods:{
add(){ //添加的方法
// 分析:
// 1.获取到id和name,直接从data上获取
// 2.组织出一个对象
// 3.把这个对象,调用数组的相关方法,添加到当前data上的list中
// 4.注意:在Vue中已经实现了数据的双向绑定,每当我们修改了data中的数据.Vue会监听到数据的改动,自动把最新的数据应用到页面上
var car = { id:this.id , name:this.name , ctime:new Date()}
this.list.push(car)
this.id = this.name = ''
}
}
})
</script>
</body>
</html>