为啥我不能使用常量而不是 this.item.number?
Posted
技术标签:
【中文标题】为啥我不能使用常量而不是 this.item.number?【英文标题】:Why can't I use constant number instead of this.item.number?为什么我不能使用常量而不是 this.item.number? 【发布时间】:2020-05-17 19:45:18 【问题描述】:
<template>
<Page>
<ActionBar title="item" />
<ScrollView>
<StackLayout>
<Label textWrap="true" v-for="n in times" :text="n" />
</StackLayout>
</ScrollView>
</Page>
</template>
<script>
export default
props: ["item"],
data()
return
times: this.item.subTotal - this.item.subtrackfromTotal // OK
// times: 9 - 5, // OK
// times: this.item.subTotal - 5 //error: INVALID ARRAY LENGTH
;
;
</script>
我想从(我的数据的数字字段)中减去 5 并 => 在v-for="n in times"
中使用它
但是当我使用一个常量比如 5 时,它会给出一个 INVALID ARRAY LENGTH 错误。
为什么times: this.item.subTotal - 5
会失败?
请帮我弄清楚;如何对我的数据和常数使用运算符,同时让 vue 相信我发送的是常数而不是数组?
当我尝试times: this.item.subTotal - this.item.subtrackfromTotal
或times: 9 - 5
Vue 时,将时间作为常数。
但是当我尝试times: this.item.subTotal - 5
时,它给出了 INVALID ARRAY LENGTH 错误。
感谢您提前回复。
请在 N 个 Playground 中检查代码
Playground of "modify counts (item.number - 5)"
【问题讨论】:
times: (this.item.subTotal >= 0)? this.item.subTotal - 5 : this.item.subTotal
【参考方案1】:
您收到该错误是因为该值为负数。
对于您的其中一项,this.item.subTotal
的值为 4,因此times
为 -1。
new Vue(
el: '#app',
data ()
return
times: -1
)
<script src="https://unpkg.com/vue@2.6.11/dist/vue.js"></script>
<div id="app">
<div v-for="a in times"></div>
</div>
您如何修复它取决于您希望在这种情况下的行为。也许是这个?
times: Math.max(0, this.item.subTotal - 5)
【讨论】:
非常感谢。这是一种通过在文档中搜索很难找到的答案。以上是关于为啥我不能使用常量而不是 this.item.number?的主要内容,如果未能解决你的问题,请参考以下文章