http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5810|回复: 7

[vue.js学习笔记] [Vue.js]学习笔记-Vue.js计算属性-computed setter

[复制链接]
发表于 2018-12-12 15:16:48 | 显示全部楼层 |阅读模式
[Vue.js]学习笔记-Vue.js计算属性-computed setter




导读部分





教程部分


Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。
另: Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统

Vue.js 计算属性关键词: computed
计算属性在处理一些复杂逻辑时是很有用, 主要使模板变的简单易懂,计算方法均在js中处理。
computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter
看内容的直观意思就是, getter是获取值的, 而setter是修改值内容的

下面我们通过实例来进行computed的getter与setter的使用方法:
实例:

[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 苏飞论坛(sufeinet.com)</title>
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <p>{{ site }}</p>
</div>

<script>
var vm = new Vue({
  el: '#app',
  data: {
	name: 'Google',
	url: 'http://www.google.com'
  },
  computed: {
    site: {
      // getter
      get: function () {
        return this.name + ' ' + this.url
      },
      // setter
      set: function (newValue) {
        var names = newValue.split(' ')
        this.name = names[0]
        this.url = names[names.length - 1]
      }
    }
  }
})
// 调用 setter, vm.name 和 vm.url 也会被对应更新
vm.site = '苏飞论坛 [url]http://www.sufeinet.com[/url]';
document.write('name: ' + vm.name);
document.write('<br>');
document.write('url: ' + vm.url);
</script>
</body>
</html>

运行结果如下:
7.jpg

通过上例可以看到, setter会修改原有的内容, 并将修改后的内容输出




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2018-12-12 15:17:00 | 显示全部楼层
在运行 vm.site = '苏飞论坛 http://www.sufeinet.com'; 时,setter 会被调用, vm.name 和 vm.url 也会被对应更新
 楼主| 发表于 2018-12-12 15:20:03 | 显示全部楼层
[HTML] 纯文本查看 复制代码
vm.site = '苏飞论坛 [url]http://www.sufeinet.com[/url]';
document.write('name: ' + vm.name);
document.write('<br>');
document.write('url: ' + vm.url);



主要是上面的内容, vm.site 时处理将内容给修改了,  如果去掉这部分内容, 显示的结果如下:
9.jpg   可以看到, 内容并没有修改, 还是原有的赋值内容运行

以上运行结果的html代码如下:
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 苏飞论坛(sufeinet.com)</title>
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <p>{{ site }}</p>
</div>

<script>
var vm = new Vue({
  el: '#app',
  data: {
	name: 'Google',
	url: 'http://www.google.com'
  },
  computed: {
    site: {
      // getter
      get: function () {
        return this.name + ' ' + this.url
      },
      // setter
      set: function (newValue) {
        var names = newValue.split(' ')
        this.name = names[0]
        this.url = names[names.length - 1]
      }
    }
  }
})

</script>
</body>
</html>

发表于 2018-12-12 15:26:09 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-12 16:42:03 | 显示全部楼层
感恩无私的分享与奉献
发表于 2018-12-12 16:49:31 | 显示全部楼层
感恩无私的分享与奉献
发表于 2018-12-13 17:13:33 | 显示全部楼层
看到这帖子真是高兴!
发表于 2018-12-15 14:03:51 | 显示全部楼层
楼主加油,我们都看好你哦。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-23 10:41

© 2014-2021

快速回复 返回顶部 返回列表