<div id="demo">
<p>原字符串:{
{str}}p>
<p>新字符串:{
{newstr}}p>
div>
<script type="text/javascript">
var demo = new Vue({
el : '#demo',
data :{
str : 'JavaScript*CSS*HTML+Vue.js'
},
computed:{
newstr : function(){
return this.str.split('*').join('+');//对字符串进行分割并重新连接
}
}
})
script>
<div id="demo">
<p>连接后的名字:{
{fullname}}p>
div>
<script type="text/javascript">
var demo = new Vue({
el : '#demo',
data :{
first_name : '袁',
last_name :'晓茗'
},
computed:{
fullname : function(){
return this.first_name + this.last_name ;//将名字进行连接
}
}
})
script>
<div id="demo">
<p>连接后的名字:{
{fullname}}p>
div>
<script type="text/javascript">
var demo = new Vue({
el : '#demo',
data :{
first_name : '袁',
last_name :'晓茗'
},
computed:{
fullname : {
//getter
get : function(){
return this.first_name + this.last_name ;//将名字进行连接
}
}
}
})
script>
<div id="demo">
<p>手动设置(setter)的名字:{
{fullname}}p>
div>
<script type="text/javascript">
var demo = new Vue({
el : '#demo',
data :{
first_name : '袁',
last_name :'晓茗'
},
computed:{
fullname : {
//getter
get : function(){
return this.first_name + this.last_name ;//将名字进行连接
},
//setter
set : function(value){
this.first_name =value.substr(0,1);
this.last_name =value.substr(1,2);
}
}
}
})
demo.fullname = '江小白';
script>
<div id="demo">
<p>手动设置(setter)的名字:{
{fullname}}p>
div>
<script type="text/javascript">
var demo = new Vue({
el : '#demo',
data :{
first_name : '袁',
last_name :'晓茗'
},
computed:{
fullname : {
//getter
get : function(){
return this.first_name + this.last_name ;//将名字进行连接
},
}
}
})
demo.fullname = '江小白';
<div id="demo">
<p>姓名:{
{fullname()}}p>
div>
<script type="text/javascript">
var demo = new Vue({
el : '#demo',
data :{
first_name : '袁',
last_name :'晓茗'
},
methods :{
fullname : function(){
return this.first_name + this.last_name;
}
}
})
script>
<div id="app">
<input v-model="message">
<p>{
{message}}p>
<p>{
{getTimeC}}p>
<p>{
{getTimeM()}}p>
div>
<script type="text/javascript">
var demo = new Vue({
el : '#app',
data :{
message :'',
time :'当前时间:'
},
computed :{
//计算属性
//计算属性的getter
getTimeC :function(){
var hour =new Date().getHours();
var minute =new Date().getMinutes();
var second =new Date().getSeconds();
return this.time+ hour +":"+minute +":"+second;
}
},
methods :{
//普通方法
getTimeM :function(){
//获取当前时间
var hour =new Date().getHours();
var minute =new Date().getMinutes();
var second =new Date().getSeconds();
return this.time+ hour +":"+minute +":"+second;
}
}
})
script>
v-model 指令用来在表单元素上创建双向数据绑定
注意:在上述代码中,getTimeC 计算属性依赖于 time 属性。当页面重新渲染时,只要 time 属性未发生改变,多次访问 getTimeC 计算属性会立即返回之前的计算结果,而不会再次执行函数,因此会输出缓存时间。相比之下,每当触发页面重新渲染时,调用 getTimeM() 方法总是会再次执行函数,因此会输出最新时间。
<div id="app">div>
<script type="text/javascript">
var vm= new Vue({
el : '#app',
data :{
fullname :'张三'
},
watch:{
fullname : function(newValue,oldValue){
alert("原值:"+oldValue+"新值:"+newValue);
}
}
})
vm.fullname = '李四';//修改属性值
<div id="app">div>
<script type="text/javascript">
var vm = new Vue({
el : '#app',
data :{
fullname :'张三'
},
})
vm.$watch ('fullname',function(newValue,oldValue){
alert("原值:"+oldValue+"新值:"+newValue);
});
vm.fullname = '李四';//修改属性值
script>
当监听的数据是一个数组或者对象时,回调函数中的新值和旧值是相等的,因为这两个形参指向的是同一个数据对象。
<div id="app">div>
<script type="text/javascript">
var vm = new Vue({
el : '#app',
data :{
shop:{
name : 'HuaWei',
price : 3299
}
},
watch :{
shop :{
handler :function(val){
alert(val.name + "新价格为"+ val.price +"元");
},
deep : true,
},
}
})
vm.shop.price =2999;//修改对象中得属性值
script>
备注:后期会继续跟进 Vue.js前端框架:样式绑定,希望大家的多多支持和关注。