所有demo均可以在技术胖博客找到,他的博客写得非常好,也经常更新一些新的知识,有兴趣的小伙伴可以移步去他的博客。链接:web前端技术
1.propsData Option 全局扩展的数据传递
<!DOCTYPE html>
<html>
<head>
<title>propsData Option 全局扩展的数据传递</title>
</head>
<body>
<h1>propsData Option 全局扩展的数据传递</h1>
<hr>
<div id="app">
<header></header>
</div>
<script type="text/javascript" src="../assets/js/vue.js"></script>
<script>
var header_a = Vue.extend({
template:`<div>{{message}}-{{a}}</div>`,
data(){
return {
message:'Hello, I am Header'
}
},
props:['a']
})
new header_a( {propsData:{a:'这是props传值'}} ).$mount('header')
</script>
</body>
</html>
2.computed Option 计算选项
<!DOCTYPE html>
<html>
<head>
<title>computed Option 计算选项</title>
</head>
<body>
<h1>computed Option 计算选项</h1>
<hr>
<div>computed 的作用主要是对原数据进行改造输出。改造输出:包括格式的编辑,大小写转换,顺序重排,添加符号……。</div><br>
<div style="font-weight: 700;">computed 属性是非常有用,在输出数据前可以轻松的改变数据。</div>
<div id="app">
<br><div>格式化输出结果:</div>
<div style="color:red;">{{newPrice}}</div><br>
<div>反转数据:</div>
<ol style="color:red;">
<li v-for="item in newArr">{{item.title}}-{{item.date}}</li>
</ol>
</div>
<script type="text/javascript" src="../assets/js/vue.js"></script>
<script>
var app = new Vue({
el:"#app",
data:{
price:100,
arr:[
{title:'香港或就“装甲车被扣”事件追责 起诉涉事运输公司',date:'2017/3/10'},
{title:'日本第二大准航母服役 外媒:针对中国潜艇',date:'2017/3/12'},
{title:'中国北方将有明显雨雪降温天气 南方阴雨持续',date:'2017/3/13'},
{title:'起底“最短命副市长”:不到40天落马,全家被查',date:'2017/3/23'},
]
},
computed:{
newPrice(){
return this.price = "这件衣服的价格是"+this.price+"元";
},
newArr(){
return this.arr.reverse()
}
}
})
</script>
</body>
</html>
3.Methods Option 方法选项
<!DOCTYPE html>
<html>
<head>
<title>Methods Option 方法选项</title>
</head>
<body>
<h1>Methods Option 方法选项</h1>
<hr>
<div id="app">
<div>{{count}}</div>
<button @click="add">Add</button>
<button @click="add2(number)">方法传参</button>
<button @click="add3($event)">方法$event参数</button>
<btn @click.native="add2(3)"></btn>
</div>
<button onclick="app.add2(2)">作用域外部调用构造器里的方法</button>
<div style="color: red;">作用域外部调用构造器里的方法,这种不经常使用,如果你出现了这种情况,说明你的代码组织不够好。</div>
<script type="text/javascript" src="../assets/js/vue.js"></script>
<script>
var btn = {
template:`<button>native 给组件绑定构造器里的原生事件</button>`
}
var app = new Vue({
el:"#app",
data:{
count:0,
number: 5
},
methods:{
add(){
this.count++;
},
add2(num){
if (num != '') {
this.count += num;
}else{
this.count++;
}
},
add3($event){
console.log($event);
}
},
components:{
'btn':btn
}
})
</script>
</body>
</html>
4.Watch 选项 监控数据
<!DOCTYPE html>
<html>
<head>
<title>Watch 选项 监控数据</title>
</head>
<body>
<h1>Watch 选项 监控数据</h1>
<hr>
<div>数据变化的监控经常使用</div>
<div id="app">
<div>当前温度是:{{count}}</div>
<div>
<button @click="add">加</button>
<button @click="del">减</button>
</div>
<div style="color:red;">{{tip}}</div>
</div>
<script type="text/javascript" src="../assets/js/vue.js"></script>
<script>
var app = new Vue({
el:"#app",
data:{
count:0,
tip: '我们建议穿棉衣羽绒服',
tipArr:['我们建议穿T恤短袖','我们建议穿夹克长裙','我们建议穿棉衣羽绒服']
},
methods:{
add(){
this.count = this.count+1;
if (this.count >= 26) {
this.tip = this.tipArr[0];
}else if(this.count <= 26 && this.count > 0){
this.tip = this.tipArr[1];
}else if(this.count <= 0 ){
this.tip = this.tipArr[2];
}
},
del(){
this.count = this.count-1;
if (this.count >= 26 ) {
this.tip = this.tipArr[0];
}else if(this.count <= 26 && this.count > 0){
this.tip = this.tipArr[1];
}else if(this.count <= 0 ){
this.tip = this.tipArr[2];
}
}
}
})
</script>
</body>
</html>
5.Mixins的基本用法
<!DOCTYPE html>
<html>
<head>
<title>Mixins的基本用法</title>
</head>
<body>
<h1>Mixins的基本用法</h1>
<hr>
<div id="app">
<div>{{count}}</div>
<div><button @click="add">add</button></div>
<div>从执行的先后顺序来说,都是混入的先执行,然后构造器里的再执行,需要注意的是,这并不是方法的覆盖,而是被执行了两边。</div>
<div style="color:red;">当混入方法和构造器的方法重名时,混入的方法无法展现,也就是不起作用</div>
</div>
<script type="text/javascript" src="../assets/js/vue.js"></script>
<script>
//额外临时加入,用于显示日志
var addLog = {
updated: function(){
console.log("数据发生变化"+this.count)
}
}
var app = new Vue({
el:"#app",
data:{
count:0
},
methods:{
add(){
this.count++;
console.log("anniu自增")
}
},
mixins:[addLog],
updated(){
console.log("构造器里的updated方法。")
}
})
</script>
</body>
</html>
6.Extends Option 扩展选项
<!DOCTYPE html>
<html>
<head>
<title>Extends Option 扩展选项</title>
</head>
<body>
<h1>Extends Option 扩展选项</h1>
<hr>
<div id="app">
${message}
<div><button @click="add">add</button></div>
</div>
<script type="text/javascript" src="../assets/js/vue.js"></script>
<script>
var myExtends = {
created:function(){
console.log("我是被created出来方法");
},
methods:{
add:function(){
console.log("我是被methods出来方法");
}
}
}
var app = new Vue({
el:"#app",
data:{
message:"你好,世界!"
},
methods:{
add(){
console.log("我是构造器原生方法")
}
},
extends:myExtends,
//改变插值的符号
delimiters:['${','}']
})
</script>
</body>
</html>