Vue计算属性的getter与setter以及侦听器

# 计算属性的Getter 和 Setter:
<div id="app">
  <p>{{ fullName }}</p>
</div>
var vm = new Vue({
  el: '#app',
  data: {
	firstName: 'Foo',
	lastName: 'Bar',
  },
  computed: {
	fullName() {
     get: function () { // 通过 var x =  this.fullName 的方式获取fullName的值时,触发 getter
		return this.firstName + ' ' + this.lastName;
     },
     set: function(val) { // 通过 this.fullName = 'xx zz' 的方式设置fullName的值时,触发 setter
		var names = val.split(' ');
		this.firstName = names[0];
		this.lastName = names[names.lenght - 1]
     },
   },
  },
});
# 侦听器:

当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的:

下面示例中的 debounce 方法是lodash提供的,作用是:
在某个行为触发后 n秒【第二个参数传延迟时间】 执行 回调方法【第一个参数传回调方法】,如果在延迟时间内再次触发该行为,延迟时间重置:
在下面案例中,用户输入是一种行为,该行为触发后 500毫秒内,当用户再次执行输入操作时,时间重置,继续判断以当前操作时间为起始的 500毫秒内用户是否再次执行操作,以此循环。如果 500毫秒内,用户如果没有再次输入,则触发 this.getAnswer 方法。

<div id="watch-example">
  <p>
     Ask a yes/no question: 
     <input v-model="question">
  </p>
  <p>{{ answer }}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.13.1/lodash.min.js"></script>

<script>
  var vm = new Vue({
    el: '#watch-example',
    data: {
       question: '',
       answer: '除非你问问题,否则我不能给你答案!',
    },
    watch: {
	  // 如果 question 发生改变,这个函数就会运行
	  question: function (new, old) {
	  	this.answer = '等待你停止打字';
	  	this.debouncedGetAnswer();
	  },
	  created() {
		this.debouncedGetAnswer = _.debounce(this.getAnswer, 500)
      },
      methods: {
		getAnswer() {
			if (this.question.indexOf('?') === -1) {
			   this.answer = '';
			   return;
			}
			this.answer = '请求中...';
			var vm = this;
			axios.get('https://yesno.wtf/api')
			  .then(() => {
				this.answer = _.capitalize(response.data.answer);	
			  }).catch((error) => {
				this.answer = '错误,无法访问API' + error;
			 });
		},
	  },
	},
  });
</script>

参数文献:

Vue官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值