jeck貓
2023-09-28 17:30:06
我正在嘗試格式化輸入中輸入的數字,當我離開輸入但該值未在 v 模型中更新時,我調用一個函數來執行此操作。該函數工作正常,因為我警告了該值,但它從未在視圖中更新。任何想法?html <div v-for="year in years"> <input type="text" :disabled="budget.checked[year] == true" v-on:blur="formatMoney(budget.personnelBudget[year])" v-model="budget.personnelBudget[year]"/> <input type="text" :disabled="budget.checked[year] == true" v-on:blur="formatMoney(budget.travellingBudget[year])" v-model="budget.travellingBudget[year]" /> <input type="text" :disabled="budget.checked[year] == true" v-on:blur="formatMoney(budget.inventoriableBudget[year]" v-model="budget.inventoriableBudget[year]" /> .....js data: function(){ return{ budget:{ personnelBudget:[], travellingBudget:[], inventoriableBudget:[], consumablesBudget:[], indirectExpensesPercent:[], indirectExpensesBudget:[], totalBudget:[], checked:[], },},methods: { formatMoney(input) { this.budget.personnelBudget[year]=this.budget.personnelBudget[year] .replace(/,/g, "") this.budget.personnelBudget[year]=parseFloat(this.budget.personnelBudget[year]) .toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,'); alert(this.budget.personnelBudget[year]) },
1 回答

料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
您遇到了反應性問題,因為您正在為嵌套字段分配一個值,而該值未反映在 template 中,要解決此問題,請嘗試使用this.$set:
this.$set(this.budget,'personnelBudget',
{...this.budget.personnelBudget,
[year]:this.budget.personnelBudget[year].replace(/,/g, "")})
然后嘗試將輸入作為字符串傳遞:
<input ... v-on:blur="formatMoney('personnelBudget',year)" v-model="budget.personnelBudget[year]"/>
和
formatMoney(input,year) {
this.$set(this.budget,'personnelBudget',
{...this.budget[input],
[year]:this.budget[input][year].replace(/,/g, "")})
添加回答
舉報
0/150
提交
取消