亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue.js 更改值未在輸入 v-model 中更新

vue.js 更改值未在輸入 v-model 中更新

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, "")})


查看完整回答
反對 回復 2023-09-28
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號