计量属性computed,js第30日学习笔记

by admin on 2019年8月24日

Vue.js第八天学习笔记(总结属性computed),vue.jscomputed

明日给大家分享下vue.js中的总结属性(computed)

示例一

computed的get属性

必发88 1

html:

<template>
 <div class="input-text">
 <input type="text" v-model='firstName'>
 <input type="text" v-model='lastName'>
 {{fullName}}
 </div>
</template>

js:

<script>
export default {
 components: {

 },
 ready: function() {

 },
 methods: {
 },
 data() {
 return {
 firstName: 'Foo',
 lastName: 'Bar'
 }
 },
 computed: {
 fullName: {
 // getter
 get: function() {
 return this.firstName + ' and ' + this.lastName
 },
 // setter
 set: function(newValue) {
 var names = newValue.split(' and ')
 this.firstName = names[0]
 this.lastName = names[names.length - 1]
 }
 }
 }
}
</script>

示例二

computed的get和set属性:

必发88 2

计量属性computed,js第30日学习笔记。html:

<template>
 <div class="input-text">
 <input type="text" v-model='a'>{{b}}
 <input type="button" value="修改b的值" @click='updateData'>
 <input type="text" v-model='c'>
 </div>
</template>

js:

<script>
export default {
 components: {
 },
 ready: function() {
 },
 methods: {
 updateData:function(){
 this.b=this.b;//给 b 重新赋值时就会调用 b 的 set 属性,从而改变 c 的值
 }
 },
 data() {
 return {
 a:'1:30',
 c:''
 }
 },
 computed: {
 b:{
 get: function() {//通过a的值改变b的值
 var time=this.a;
 time = time ? time.split(':') : '';
 let hours = time[0];
 let minutes = time[time.length - 1];
 return parseInt(hours) * 60 + parseInt(minutes);
 },
 set:function(newValue){//通过b值的改变,设置 c 的值
 let newTimes = newValue;
 let hoursTime = parseInt(newTimes) / 60;
 let minutesTime = parseInt(newTimes) % 60;
 newTimes = newTimes + '';
 hoursTime = hoursTime + '';
 hoursTime = hoursTime ? hoursTime.split('.') : '';
 this.c = hoursTime[0] + ':' + minutesTime;
 console.log(hoursTime[0] + ':' + minutesTime);
 }
 }
 }
}
</script>

上述正是本文的全体内容,希望对大家的就学抱有扶助,也期待我们多多帮忙帮客之家。

明日给大家大快朵颐下vue.js中的总计属性(computed) 示例一 computed的get属性
html: template div…

前些天给大家大饱眼福下vue.js中的总结属性(computed)

computed

正文实例为我们享用了Vue.js达成价格总括器成效的切实可行代码,供大家参照他事他说加以考察,具体内容如下

示例一

computed:也等于method,重临function内return的值赋值在html的DOM上。可是五个{{}}使用了computed,computed内的function也只举办壹回。仅当function内涉及到Vue实例绑定的data的值的改换,function才会从新实施,并修改DOM上的内容。

落到实处际效果果与利益:

computed的get属性

computed和method的对比

必发88 3

必发88 4

<div id="example">
 {{ message.split('').reverse().join('') }}
</div>

实今世码及注释:

html:

那么些是vue官方网址平昔拿来作为例子的代码。在{{}}可以很便利的放入单个表明式,可是当三个HTML的DOM里面存在太多的表明式,程序会变得很笨重难于爱慕。

<!DOCTYPE html>
<html>
<head>
 <title>价格计算器</title>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <style type="text/css">

 /* 隐藏未编译的数据绑定,直到Vue实例成功加载 */
 [v-cloak]{
  display: none;
 }
 *{
  padding: 0;
  margin: 0;
 }
 body{
  font: 15px/1.3 "微软雅黑";
  color: #545b64;
  text-align: center;
 }
 a, a:visited{
  outline: none;
  color: #389dc1;
 }
 a:hover{
  text-decoration: none;
 }
 section, footer, header, aside, nav{
  display: block;
 }

 /*-------------------------
  The order form
 --------------------------*/

 form{
  background-color: #d5d5d5;
  border-radius: 10px;
  box-shadow: 0 1px 1px #ccc;
  width: 400px;
  padding: 35px 45px;
  margin: 50px auto;
  box-shadow: 1px 0px 20px #f5f5f5;
 }

 form h1{
  color:#fff;
  font-size: 55px;
  font-family: "微软雅黑"
  font-weight: normal;
  line-height:1;
  text-shadow:2px 3px 0 rgba(0,0,0,0.1);
  font-weight: normal;
 }

 form ul{
  list-style:none;
  color:#fff;
  font-size:20px;
  font-weight:bold;
  text-align: left;
  margin:20px 0 15px;
 }

 form ul li{
  padding:15px 30px;
  background-color:#03c03c;
  margin-bottom:10px;
  box-shadow:0 1px 1px rgba(0,0,0,0.1);
  cursor:pointer;
 }

 form ul li span{
  float:right;
 }

 form ul li.active{
  background-color: orange;
 }

 div.total{
  border-top:1px solid rgba(255,255,255,0.5);
  padding:15px 30px;
  font-size:20px;
  font-weight:bold;
  text-align: left;
  color:#fff;
  text-shadow: 2px 2px 2px rgba(0,0,0,0.1);
 }

 div.total span{
  float:right;
 }
 </style>

</head>
<body>

<!-- v-cloak隐藏所有没有编译过的数据绑定,直到vue实例准备好 -->

<form id="main" v-cloak>
 <h1>价格计算器</h1>
 <ul>

  <!-- 循环这个服务数组,分配一个点击句柄,并且设置或移除active class -->
  <li v-for="service in services" v-on:click="toggleActive(service)" v-bind:class="{'active': service.active}">

   <!-- 显示这个数组中每个实体的名称和价格格式化, Vue有一个内置的货币筛选器用于对价格进行 -->

   {{service.name}} {{service.price | currency}}

  </li>
 </ul>

 <div class="total">

  <!-- 计算所有选定商品的总价格,并且格式化为货币显示方式 -->

  总价: {{total() | currency}}
 </div>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
<script type="text/javascript">

 // 定义一个常规过滤器currency
 Vue.filter('currency', function(value){
  return '¥' + value.toFixed(2);
 });

 var demo = new Vue({
  el: '#main',
  data: {
   // 定义model属性,view将会循环
   // 通过services数组产生一个li
   // 定义services每一项的元素

   services: [
    {
     name: "网站开发",
     price: 300,
     active: true
    },
    {
     name: "设计",
     price: 400,
     active: false
    },
    {
     name: "一体化整合",
     price: 250,
     active: false
    },
    {
     name: "操作培训",
     price: 220,
     active: false
    }
   ]
  },

  methods: {
   toggleActive: function(s){
    s.active = !s.active;
   },
   total: function(){
    var total = 0;
    this.services.forEach(function(s){
     if(s.active){
      total+=s.price;
     }
    });
    return total;
   }
  }
 });
</script>

</body>
</html>
<template>
 <div class="input-text">
 <input type="text" v-model='firstName'>
 <input type="text" v-model='lastName'>
 {{fullName}}
 </div>
</template>

必发88 ,html

计量属性computed,js第30日学习笔记。如上正是本文的全部内容,希望对大家的就学抱有扶助,也指望大家多多援救脚本之家。

js:

<div id="app9">
  9、method与computed的区别<br/>
  fullName<br/>
  {{fullName}}<br/>
  fullName2<br/>
  {{fullName}}<br/>
  fullNameMethod<br/>
  {{getFullName()}}<br/>
  fullNameMethod2<br/>
  {{getFullName()}}<br/>
</div>

你或许感兴趣的篇章:

  • Vue.js完毕的计算器作用一体化示例
  • Vue.js每日必学之总括属性computed与$watch
  • Vue
    computed总结属性的应用方法
  • Vue总计属性的选拔
  • Vue.js总计属性computed与watch(5)
  • Vue.js教程之总结属性
  • vue达成简单实时货币的比率总计作用
  • vue中计算属性(computed)、methods和watched之间的区分
  • vue2.0中vue-cli达成全选、单选计算总价格的实例代码
  • vue中的总括属性的利用和vue实例的方法身体力行
  • vue.js达成的优异计算器/科学总计器效率示例
<script>
export default {
 components: {

 },
 ready: function() {

 },
 methods: {
 },
 data() {
 return {
 firstName: 'Foo',
 lastName: 'Bar'
 }
 },
 computed: {
 fullName: {
 // getter
 get: function() {
 return this.firstName + ' and ' + this.lastName
 },
 // setter
 set: function(newValue) {
 var names = newValue.split(' and ')
 this.firstName = names[0]
 this.lastName = names[names.length - 1]
 }
 }
 }
}
</script>

js

示例二

var app9 = new Vue({
  el: '#app9',
  data: {
    firstName: 'Foo',
    lastName: 'Bar'
  },
  methods:{
    getFullName:function () {
      console.log("执行了methods")
      return this.firstName+" " +this.lastName;
    }
  },
  computed: {
    fullName: function () {
      console.log("执行了computed")
      return this.firstName + ' ' + this.lastName
    }
  }
})
setTimeout('app9.firstName="Foo2"',3000);

computed的get和set属性:

支配台出口的结果

必发88 5

执行了computed
执行了methods
执行了methods
执行了computed
执行了methods
执行了methods 

html:

有鉴于此使用computed,function只会实行贰回。当Vue实例中绑定的data数据变动的时候,computed也相对应的只变动三遍。

<template>
 <div class="input-text">
 <input type="text" v-model='a'>{{b}}
 <input type="button" value="修改b的值" @click='updateData'>
 <input type="text" v-model='c'>
 </div>
</template>

相同点:在上述代码中,八个p标签都会打字与印刷出一致被反转的Hello。

js:

不同点: 行使了methods的:HTML中,每二个调用了Vue的methods的不二等秘书籍,都急需施行三次reversedMessage()这一个格局;
而选用computed总结属性的,只实行三回将结果保存在缓存中。

<script>
export default {
 components: {
 },
 ready: function() {
 },
 methods: {
 updateData:function(){
 this.b=this.b;//给 b 重新赋值时就会调用 b 的 set 属性,从而改变 c 的值
 }
 },
 data() {
 return {
 a:'1:30',
 c:''
 }
 },
 computed: {
 b:{
 get: function() {//通过a的值改变b的值
 var time=this.a;
 time = time ? time.split(':') : '';
 let hours = time[0];
 let minutes = time[time.length - 1];
 return parseInt(hours) * 60 + parseInt(minutes);
 },
 set:function(newValue){//通过b值的改变,设置 c 的值
 let newTimes = newValue;
 let hoursTime = parseInt(newTimes) / 60;
 let minutesTime = parseInt(newTimes) % 60;
 newTimes = newTimes + '';
 hoursTime = hoursTime + '';
 hoursTime = hoursTime ? hoursTime.split('.') : '';
 this.c = hoursTime[0] + ':' + minutesTime;
 console.log(hoursTime[0] + ':' + minutesTime);
 }
 }
 }
}
</script>

computed和watch的对比

本文已被整理到了《Vue.js前端组件学习课程》,接待大家学习阅读。

html

如上正是本文的全体内容,希望对大家的就学抱有支持,也可望大家多多帮助脚本之家。

<div id="demo">{{ fullName }}</div>

你只怕感兴趣的篇章:

  • Vue
    computed总计属性的运用方法
  • Vue.js总计属性computed与watch(5)
  • Vue.js教程之总结属性
  • Vue.js每日必学之总计属性computed与$watch
  • vue.js入门教程之计算属性
  • vue超时总结的零部件实例代码

js

var vm = new Vue({
 el: '#demo',
 data: {
 firstName: 'Foo',
 lastName: 'Bar',
 fullName: 'Foo Bar'
 },
 watch: {
 firstName: function (val) {
  this.fullName = val + ' ' + this.lastName
 },
 lastName: function (val) {
  this.fullName = this.firstName + ' ' + val
 }
 }
})


var vm = new Vue({
 el: '#demo',
 data: {
 firstName: 'Foo',
 lastName: 'Bar'
 },
 computed: {
 fullName: function () {
  return this.firstName + ' ' + this.lastName
 }
 }
})

如上正是本文的全部内容,希望对我们的求学抱有协理,也希望大家多多支持脚本之家。

您可能感兴趣的篇章:

  • Vue.js完毕的总计器功效完全示例
  • Vue.js完成价格总计器功效
  • Vue.js每日必学之总计属性computed与$watch
  • Vue总括属性的使用
  • Vue.js总计属性computed与watch(5)
  • Vue.js教程之计算属性
  • vue完成轻易实时货币的比率总计效能
  • vue中总括属性(computed)、methods和watched之间的分别
  • vue2.0中vue-cli落成全选、单选总括总价格的实例代码
  • vue中的总括属性的接纳和vue实例的不二诀要身体力行
  • vue.js完成的经文总计器/科学总括器功效示例

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图