<div id="app"> {{ message }} </div> <script> new Vue({ el: "#app", data: { message: "Hello Vue.js!" } }) </script>①el应该表示绑定的意思,绑定id=app这个标签
<div class="app"> {{ message }} </div>el: ".app",
<div class="app"> {{ message }} </div> <div class="app"> {{ message }} </div> Hello Vue.js!{{ message }}②data里的message变量,表示{{message}的值
<div id="app"> {{ message }} <br/> <input v-model="message"/> </div> <script> new Vue({ el: "#app", data: { message: "Hello Vue.js!" } }) </script>效果是:
<div id="app"> {{ message() }} <br/> <input v-model="message()"/> </div> <script> new Vue({ el: "#app", data: { message: function () { return "Hello Vue.js!"; } } }) </script>效果:
<div id="app"> <ul> <li v-for="list in todos"> {{list.text}} </li> </ul> </div> <script> new Vue({ el: "#app", data: { todos: [ {text: "1st"}, {text: "2nd"}, {text: "3rd"} ] } }) </script>v-for里的list,类似for in里面的i,
<div id="app"> <input v-model="message"> <input type="button" value="值+1" v-on:click="add"/> <input type="button" value="值-1" v-on:click="minus"/> <input type="button" value="重置归零" v-on:click="reset"/> </div> <script> new Vue({ el: "#app", data: { message: 1 }, methods: { add: function () { this.message++; //这步要加this才能正确获取到值 }, minus: function () { this.message--; }, reset: function () { this.message = 0; } } }) </script>效果:
<div id="app"> <input v-model="val" v-on:keypress.enter="addToList"> <ul> <li v-for="val in values"> {{val.val}} <input type="button" value="删除" v-on:click="removeList($index)"/> </li> </ul> </div> <script> new Vue({ el: "#app", data: { val: "1", values: [] }, methods: { addToList: function () { var val = parseInt(this.val.trim()); //注意,因为当上面的val是字符串类型的时候,才能用trim(),如果是数字类型,则用this.val if (val) { this.values.push({val: val}); } this.val = String(val + 1); }, removeList: function (index) { this.values.splice(index, 1); } } }) </script>效果:
③他的添加,利用的是双向绑定,将输入的值push到data里面的values这个数组之种,然后利用渲染列表的效果,输出多行值。
④在button标签里,函数的参数名给了一个参数,是该行索引,参数名是$index
⑤标签里,触发的函数的函数名,可以加括号,也可以不加括号,实测似乎是没有影响的。
(七)标签和API总结(1)
① {{ 变量名 }}
表示绑定的变量,调用时需要用this.变量名
② v-model=”变量”
双向绑定使用,如果input里不加任何type就是文本,如果加type就是type,例如:
<input v-model="DATE" type="date"/> <li>{{DATE}}</li>就会将日期类型的输入框的值,和li标签显示的内容绑定在一起。
data: { val: "1", values: [] }, methods: { addToList: function () { console.log(this.val);这里的this.val就是上面的data.val,也是html里的{{val}},也是v-model=”val”,但不是
<li v-for="val in values"> {{val.val}} <input type="button" value="删除" v-on:click="removeList($index)"/> </li>里面的val.val,至于原因,个人认为是这里的val处于v-for的作用域内,因此val in values 里的val其在作用域链中的优先级更高