vue 对象里面有id属性_Vue对象提供的属性功能

3. Vue对象提供的属性功能

3.1 过滤器

过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中。

定义过滤器的方式有两种。

3.1.1 使用Vue.filter()进行全局定义

Vue.filter("RMB1", function(v){

//就是来格式化(处理)v这个数据的

if(v==0){

return v

}

return v+"元"

})

3.1.2 在vue对象中通过filters属性来定义

var vm = new Vue({

el:"#app",

data:{},

filters:{

RMB2:function(value){

if(value==''){

return;

}else{

return '¥ '+value;

}

}

}

});

3.4 计算和侦听属性

3.4.1 计算属性

我们之前学习过字符串反转,如果直接把反转的代码写在元素中,则会使得其他同事在开发时时不易发现数据被调整了,所以vue提供了一个计算属性(computed),可以让我们把调整data数据的代码存在在该属性中。

Title

window.onload = function(){

var vm = new Vue({

el:"#app",

data:{

str1: "abcdefgh"

},

computed:{ //计算属性:里面的函数都必须有返回值

strRevs: function(){

var ret = this.str1.split("").reverse().join("");

return ret

}

}

});

}

{{ str1 }}

{{ strRevs }}

3.4.2 监听属性

侦听属性,可以帮助我们侦听data某个数据的变化,从而做相应的自定义操作。

侦听属性是一个对象,它的键是要监听的对象或者变量,值一般是函数,当侦听的data数据发生变化时,会自定执行的对应函数,这个函数在被调用时,vue会传入两个形参,第一个是变化前的数据值,第二个是变化后的数据值。

Title

window.onload = function(){

var vm = new Vue({

el:"#app",

data:{

num:20

},

watch:{

num:function(newval,oldval){

//num发生变化的时候,要执行的代码

console.log("num已经发生了变化!");

}

}

})

}

{{ num }}

按钮

3.5 vue对象的生命周期

每个Vue对象在创建时都要经过一系列的初始化过程。在这个过程中Vue.js会自动运行一些叫做生命周期的的钩子函数,我们可以使用这些函数,在对象创建的不同阶段加上我们需要的代码,实现特定的功能。

Title

window.onload = function(){

var vm = new Vue({

el:"#app",

data:{

num:0

},

beforeCreate:function(){

console.log("beforeCreate,vm对象尚未创建,num="+ this.num); //undefined

this.name=10; // 此时没有this对象呢,所以设置的name无效,被在创建对象的时候被覆盖为0

},

created:function(){

console.log("created,vm对象创建完成,设置好了要控制的元素范围,num="+this.num ); // 0

this.num = 20;

},

beforeMount:function(){

console.log( this.$el.innerHTML ); //

{{num}}

console.log("beforeMount,vm对象尚未把data数据显示到页面中,num="+this.num ); // 20

this.num = 30;

},

mounted:function(){

console.log( this.$el.innerHTML ); //

30

console.log("mounted,vm对象已经把data数据显示到页面中,num="+this.num); // 30

},

beforeUpdate:function(){

// this.$el 就是我们上面的el属性了,$el表示当前vue.js所控制的元素#app

console.log( this.$el.innerHTML ); //

30

console.log("beforeUpdate,vm对象尚未把更新后的data数据显示到页面中,num="+this.num); // beforeUpdate----31

},

updated:function(){

console.log( this.$el.innerHTML ); //

31

console.log("updated,vm对象已经把过呢更新后的data数据显示到页面中,num=" + this.num ); // updated----31

},

});

}

{{num}}

按钮

总结:

在vue使用的过程中,如果要初始化操作,把初始化操作的代码放在 mounted 中执行。

mounted阶段就是在vm对象已经把data数据实现到页面以后。一般页面初始化使用。例如,用户访问页面加载成功以后,就要执行的ajax请求。

另一个就是created,这个阶段就是在 vue对象创建以后,把ajax请求后端数据的代码放进 created

3.2 阻止事件冒泡和刷新页面

使用.stop和.prevent

Title

.box1{

width: 200px;

height: 200px;

background: #ccc;

}

.box2{

width: 100px;

height: 100px;

background: pink;

}

window.onload = function(){

var vm = new Vue({

el:"#app",

data:{}

})

}

3.3 综合案例-todolist

我的计划列表

html代码:

todolist

.list_con{

width:600px;

margin:50px auto 0;

}

.inputtxt{

width:550px;

height:30px;

border:1px solid #ccc;

padding:0px;

text-indent:10px;

}

.inputbtn{

width:40px;

height:32px;

padding:0px;

border:1px solid #ccc;

}

.list{

margin:0;

padding:0;

list-style:none;

margin-top:20px;

}

.list li{

height:40px;

line-height:40px;

border-bottom:1px solid #ccc;

}

.list li span{

float:left;

}

.list li a{

float:right;

text-decoration:none;

margin:0 10px;

}

To do list

特效实现效果:

todolist

.list_con{

width:600px;

margin:50px auto 0;

}

.inputtxt{

width:550px;

height:30px;

border:1px solid #ccc;

padding:0px;

text-indent:10px;

}

.inputbtn{

width:40px;

height:32px;

padding:0px;

border:1px solid #ccc;

}

.list{

margin:0;

padding:0;

list-style:none;

margin-top:20px;

}

.list li{

height:40px;

line-height:40px;

border-bottom:1px solid #ccc;

}

.list li span{

float:left;

}

.list li a{

float:right;

text-decoration:none;

margin:0 10px;

}

To do list

// 计划列表代码

let vm = new Vue({

el:"#todolist",

data:{

message:"",

dolist:[

"学习html",

"学习css",

"学习javascript",

]

},

methods:{

addItem(){

if(this.messsage==""){

return false;

}

this.dolist.push(this.message);

this.message = ""

},

delItem(key){

// 删除和替换

// 参数1: 开始下表

// 参数2: 元素长度,如果不填默认删除到最后

// 参数3: 表示使用当前参数替换已经删除内容的位置

this.dolist.splice(key, 1);

},

upItem(key){

if(key==0){

return false;

}

// 向上移动

let result = this.dolist.splice(key,1);

this.dolist.splice(key-1,0,result[0]);

},

downItem(key){

// 向下移动

let result = this.dolist.splice(key, 1);

console.log(result);

this.dolist.splice(key+1,0,result[0]);

}

}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值