我有一个包含这样的项目的列表
Math.ceil(number / 10);
这些项目是动态添加的,我的问题是,是否有可能将数量和价格相加以得出金额值,以使金额值也会随着价格或数量而变化?
答案 0 :(得分:1)
也许你需要一个金额的getter函数:
a = ({
quantity: '',
price: '',
get amount() {
return +this.quantity + +this.price;
}
})
然后您可以访问a.amount
获取数量和价格的总和。
答案 1 :(得分:1)
虽然我觉得这个操作应该是'乘法'而不是添加'。 请尝试以下方法:
var array = [{ quantity: 10, price: 200, amount: '' },{ quantity: 5, price: 100, amount: '' }]
var newArray = array.map(function(elem, index){
array[index].amount = array[index].quantity + array[index].price
return;
});
console.log(array);

答案 2 :(得分:0)
由于您使用的是vuejs
,因此您可以使用[computed][1]
属性轻松实现目标。
示例:
export default {
data () {
return {
quantity: '',
price: ''
}
},
computed: {
amount () {
return this.quantity + this.price
}
}
}
请注意,computed
属性不能设置为this.computedProp = someValue
且不是functions
,它们可以像data
属性一样使用。
答案 3 :(得分:0)
您可以创建与列表中的项目相关的新组件
var vm = new Vue({
el: '#example',
data: {
quantity: '',
price: ''
},
computed: {
amount: function(){
return this.quantity * this.price
}
}
})
然后根据数量和价格创建计算属性。
答案 4 :(得分:0)
有几个普通javascript 选项。我没有提到任何特定的Vue。
对我来说,最简单的方法是向对象添加getAmount
- 方法,这将根据您的其他两个属性返回金额。
例如
var item = {
quantity: 3,
price: 5.00,
getAmount: function () {
return this.quantity * this.price
}
}
虽然我以null
作为默认值
第二种选择是使用对象描述符。您可以使用Object.create()
创建对象,也可以使用Object.defineProperty()
向已存在的对象添加属性。这两种方法都允许您传递对象描述符,您可以在其中为您的属性定义getter
,这将根据您的其他字段计算您想要的值。
的 e.g。强>
var item = Object.create({
quantity: null,
price: null,
}, {
amount: {
get: function () { return this.quantity*this.price }
}
})
现在,amount
属性将返回quantity * price
,只需执行item.amount
即可。
答案 5 :(得分:0)
要根据数量计算价格,只需使用{{ item.price * item.quantity }}
即可。我假设您不想使用不需要的总字段来混乱您的数据库:-)
示例(包括总价)
new Vue({
el:'#app',
data: {
list: [
{ name: 'foo', quantity: 2, price: 20 },
{ name: 'bar', quantity: 3, price: 150 },
{ name: 'baz', quantity: 1, price: 80 }
]
},
computed: {
total(){ return this.list.reduce( (total, item) => item.price * item.quantity + total ,0);},
}
})

ul {list-style:none;}
li:last-child { border-top:1px solid;border-bottom:3px double;}

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min.js"></script>
<div id="app">
<ul>
<li v-for="item in list">
{{ item.name}}: {{ item.price * item.quantity}}
</li>
<li>Total: {{ total }}</li>
</ul>
</div>
&#13;