最近项目中要用到vue.js,开始学习一下,初步感觉以前AngularJS有很相似之处:
刚写了几个demo,说一下自己对vue的理解:
1,触发事件写在html上面
2,然后在script上面先绑定上哪个事件,el方法
3,data事件是这个方法的属性,
4,methods写方法
然后几个合为一个整体,和angularjs差不多,只不过没有那个看起来紧凑,灵活。不过会比那个简单吧,感觉就跟拼积木一样,拼好了,就是这样,典型西方逻辑思维。
1,直接下载vue.js,和jquery一样,直接引入 <script src="vue.js"></script>
2,刚才写了一个demo,死活出不来想要的答案,最后发现程序还是自下向上执行,要把vue的代码写到下面就可以了
demo1:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <script src="vue.js"></script> 6 </head> 7 <body> 8 9 <div id="app"> 10 {{ message }} 11 </div> 12 13 14 <script> 15 new Vue({ 16 el: '#app', 17 data: { 18 message: 'Hello Vue.js!' 19 } 20 }) 21 </script> 22 </body> 23 </html>
3,这里我们遇到新东西。你看到的 v-if
特性被称为指令。指令带有前缀 v-
,以指示它们是 Vue.js 提供的特殊特性。并且如你所想象的,它们会对绑定的目标元素添加响应式的特殊行为。继续在控制台设置 exampleVM2.greeting
为 false
,你会发现 “Hello!” 消失了。
4,可以使用管道符 ,这个很有意思,可以在前台做筛选
5,双向绑定,在我看来就是一个值使用了两次
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <div id="app2"> <p>{{ message }}</p> <input v-model="message"> </div> <script> new Vue({ el:'#app2', data:{ message:'hello vue.js' } }) </script> </body> </html>
6,循环数据
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <div id="app"> <ul> <li v-for="todo in todos"> {{ todo.text }} </li> </ul> </div> <script> new Vue({ el: '#app', data: { todos: [ { text: 'Learn JavaScript' }, { text: 'Learn Vue.js' }, { text: 'Build Something Awesome' } ] } }) </script> </body> </html>
7.如何将数据第一条循环出来?????
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <div id="app"> <ul> <li v-for="todo in todos"> {{ todo.text }} </li> </ul> </div> <script> new Vue({ el:'#app', data: { todos:[ { "test": "Brett", "text":"McLaughlin" }, ] } }) </script>
8,控制页面字符串
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <div id="app"> <p>{{ message }}</p> <button v-on:click="reverseMessage">Reverse Message</button> </div> <script> new Vue({ el:'#app', data:{ message:'Hello vue.js!', }, methods:{ reverseMessage:function(){ this.message = this.message.split('').reverse().join(''); } } }) </script> </body> </html>
9,综合
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <div id="app"> <input v-model="newTodo" v-on:keyup.enter="addTodo"> <ul> <li v-for="todo in todos"> <span>{{ todo.text }}</span> <button v-on:click="removeTodo($index)">X</button> </li> </ul> </div> <script> new Vue({ el:'#app', data:{ newTodo:'', //input 框内默认显示元素 todos:[ {text:'Add some todos'} //开始默认出现的字 ] }, methods:{ addTodo:function(){ var text = this.newTodo.trim() if(text){ this.todos.push({ text:text }) this.newTodo = '' } }, //逗号必须存在 removeTodo:function(index){ this.todos.splice(index,1) } } }) </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <div class="static" v-bind:class="{ 'class-a': isA, 'class-b': isB }">333</div> <script> var vm = new Vue({ el: '.static', //这里应该加上,否则不显示 data: { isA: true, isB: false } }) </script> </body> </html>
10条件渲染
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <table id="app"> <tr> <td v-for="x in test1">{{ x.arr1 }}</td> <td v-for="y in test1">{{ y.arr2 }}</td> </tr> </table> <script> var vm=new Vue({ el:'#app', data:{ test1:{ x: { arr1:"[beike,hanmu]" }, y: { arr2:"[shimin,shiye]" } } } }) </script> </body> </html>
11,判断值是否在里面
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <table id="app"> <tr> <td v-for="x in test1">{{ x.arr1 }}</td> <td v-for="y in test1">{{ y.arr2 }}</td> </tr> </table> <script> var vm=new Vue({ el:'#app', data:{ test1:{ x: { arr1:"[beike,hanmu]" }, y: { arr2:"[shimin,shiye]" } } } }) </script> </body> </html>
12,
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="vue.js"></script> </head> <body> <div id="example"> <button v-on:click="greet">Greet</button> </div> <script> var vm = new Vue({ el:'#example', data:{ name:'vue.js' }, methods:{ greet:function(event){ alert('hello' + this.name + '!'); alert(event.target.tagName) } } }) vm.greet(); </script> </body> </html>
二,条件渲染还没有理解