Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表中项目的两个属性之和(javascript)_Javascript_Vue.js - Fatal编程技术网

列表中项目的两个属性之和(javascript)

列表中项目的两个属性之和(javascript),javascript,vue.js,Javascript,Vue.js,我有一个清单,上面有这样的项目 { quantity: '', price: '', amount: '' } 这些项目是动态添加的,我的问题是,是否可以将数量和价格相加以得出金额值,从而使金额值也随着价格或数量的变化而变化?因为您使用的是vuejs,所以您可以通过使用[computed][1]属性轻松实现您的目标 例如: export default { data () { return { quantity: '', price: '' }

我有一个清单,上面有这样的项目

{ quantity: '', price: '', amount: '' }

这些项目是动态添加的,我的问题是,是否可以将数量和价格相加以得出金额值,从而使金额值也随着价格或数量的变化而变化?

因为您使用的是
vuejs
,所以您可以通过使用
[computed][1]
属性轻松实现您的目标

例如:

export default {
  data () {
    return {
      quantity: '',
      price: ''
    }
  },
  computed: {
    amount () {
      return this.quantity + this.price
    }
  }
}

请注意,
computed
属性不能像
this.computedProp=someValue
那样设置,而且它们不是
函数
,它们可以像
数据
属性一样使用。

由于您使用的是
vuejs
属性,因此可以通过使用
[computed][1]
属性轻松实现您的目标

例如:

export default {
  data () {
    return {
      quantity: '',
      price: ''
    }
  },
  computed: {
    amount () {
      return this.quantity + this.price
    }
  }
}

请注意,
computed
属性不能像
this.computedProp=someValue
那样设置,它们不是
函数
,它们可以像
数据
属性一样使用。

您可以创建与列表中的项目相关的新组件

var vm=new Vue({
el:“#示例”,
数据:{
数量:“”,
价格:''
},
计算:{
金额:函数(){
返回此数量*此价格
}
}

})
您可以创建与列表中的项目相关的新组件

var vm=new Vue({
el:“#示例”,
数据:{
数量:“”,
价格:''
},
计算:{
金额:函数(){
返回此数量*此价格
}
}

})
有两个普通javascript选项。我没有提到任何特定于Vue的东西

对我来说,最简单的方法是向对象添加一个
getAmount
-方法,该方法将根据其他两个属性返回金额。
例如

var item = {
  quantity: 3,
  price: 5.00,
  getAmount: function () {
    return this.quantity * this.price
  }
}
尽管我希望使用
null
作为默认值。
第二种选择是使用对象描述符。您可以使用
object.create()
创建对象,或使用
object.defineProperty()
向现有对象添加属性。这两种方法都允许您传递一个对象描述符,您可以在其中为属性定义一个
getter
,它将根据其他字段计算所需的值。
例如

var item = Object.create({
  quantity: null,
  price: null,
}, {
  amount: {
    get: function () { return this.quantity*this.price }
  }
})

现在,
amount
属性将返回
quantity*price
,只需执行
item.amount

有几个普通javascript选项。我没有提到任何特定于Vue的东西

对我来说,最简单的方法是向对象添加一个
getAmount
-方法,该方法将根据其他两个属性返回金额。
例如

var item = {
  quantity: 3,
  price: 5.00,
  getAmount: function () {
    return this.quantity * this.price
  }
}
尽管我希望使用
null
作为默认值。
第二种选择是使用对象描述符。您可以使用
object.create()
创建对象,或使用
object.defineProperty()
向现有对象添加属性。这两种方法都允许您传递一个对象描述符,您可以在其中为属性定义一个
getter
,它将根据其他字段计算所需的值。
例如

var item = Object.create({
  quantity: null,
  price: null,
}, {
  amount: {
    get: function () { return this.quantity*this.price }
  }
})

现在,
amount
属性将返回
quantity*price
,只需执行
item.amount

也许您需要一个getter函数来计算数量:

a = ({
  quantity: '',
  price: '',
  get amount() {
    return +this.quantity + +this.price;
  }
})

然后,您可以访问a.amount以获取数量和价格之和。

也许您需要一个获取数量的getter函数:

a = ({
  quantity: '',
  price: '',
  get amount() {
    return +this.quantity + +this.price;
  }
})

然后,您可以访问a.amount以获取数量和价格之和。

尽管我认为运算应该是“乘法”而不是“加法”。 请尝试以下操作:

var数组=[{数量:10,价格:200,金额:'},{数量:5,价格:100,金额:'}]
var newArray=array.map(函数(元素,索引){
数组[index]。金额=数组[index]。数量+数组[index]。价格
返回;
});

console.log(数组)尽管我认为操作应该是“乘法”而不是“加法”。 请尝试以下操作:

var数组=[{数量:10,价格:200,金额:'},{数量:5,价格:100,金额:'}]
var newArray=array.map(函数(元素,索引){
数组[index]。金额=数组[index]。数量+数组[index]。价格
返回;
});

console.log(数组)
要根据数量计算价格,只需使用
{{item.price*item.quantity}
。我假设您不想用不必要的total字段使数据库混乱:-)

示例(包括总价)

newvue({
el:“#应用程序”,
数据:{
名单:[
{名称:'foo',数量:2,价格:20},
{名称:'bar',数量:3,价格:150},
{名称:'baz',数量:1,价格:80}
]
},
计算:{
total(){返回此.list.reduce((total,item)=>item.price*item.quantity+total,0);},
}
})
ul{list style:none;}
li:最后一个子项{边框顶部:1px实心;边框底部:3px双精度;}

  • {{item.name}:{{item.price*item.quantity}
  • 总计:{{Total}

要根据数量计算价格,只需使用
{{{item.price*item.quantity}
。我假设您不想用不必要的total字段使数据库混乱:-)

示例(包括总价)

newvue({
el:“#应用程序”,
数据:{
名单:[
{名称:'foo',数量:2,价格:20},
{名称:'bar',数量:3,价格:150},
{名称:'baz',数量:1,价格:80}
]
},
计算:{
total(){返回此.list.reduce((total,item)=>item.price*item.quantity+total,0);},
}
})