2017-06-19 16 views
1

私はデスクトップにVuejsフロントエンドプロジェクトを作成しました。私は集中管理のためにVuexを使用しています。私は自分の州にTotalAmountとProfitの値を持っていて、私はこれらの州の両方に対して加算と減算をしようとしています。確かに、うまく機能しなくなりますが、機能を増やすと状態につながります。 のは、としましょう:Vuexフロートベースのストア値が文字列として格納されています

TotalProfit:1.05465 
Profit:0.0012 

増加関数は1.054650.0012に返します。

Store.jsファイル:

const state = { 
    TotalBalance: 0, 
    Profit:0.00000000 
}; 
const actions = { 
    setTotalBalance(context, data) { 
     context.commit('setTotalBalance', parseFloat(data).toFixed(8)) 
    }, 
    increaseTotalBalance(context, data) { 
     context.commit('increaseTotalBalance', parseInt(data).toFixed(8)) 
    }, 
    decreaseTotalBalance(context, data) { 
     context.commit('decreaseTotalBalance', parseFloat(data).toFixed(8)) 
    }, 
    setProfit(context, data) { 
     context.commit('setProfit', data) 
    }, 
} 
const mutations = { 
    setTotalBalance(state,TotalBalance){ 
     state.TotalBalance = Number(parseFloat(TotalBalance).toFixed(8)); 
    }, 
    increaseTotalBalance(state,Balance){ 
     state.TotalBalance = Number(parseFloat(state.TotalBalance).toFixed(8))+Number(parseFloat(Balance).toFixed(8)) 
    }, 
    decreaseTotalBalance(state,Balance){ 
     state.TotalBalance = parseFloat(state.TotalBalance).toFixed(8)-parseFloat(Balance).toFixed(8) 
    }, 
    setProfit(state,Profit){ 
     state.Profit = Number(parseFloat(Profit).toFixed(8)) 
    } 
} 
const getters = { 
    getTotalBalance: state=>{ 
     return state.TotalBalance 
    }, 
    getProfit: state => { 
     return state.Profit 
    } 
} 
export default new Vuex.Store({ 
    state, 
    getters, 
    mutations, 
    actions 
}) 

あなたは上記のファイルから見ることができるように、しかし私は、すべてのソリューション自分自身を見つけていないさまざまな方法を試してみました。

答えて

2

toFixed文字列を返します。連結された文字列が得られます。代わりに、あなただけの数に文字列を変換する+stringを行うには、あなたがそれを表示する必要があるときゲッターで8桁の数字をカットすることができます

const store = new Vuex.Store({ 
 
    state: { 
 
    TotalBalance: 1.05465, 
 
    Profit: 0.0012 
 
    }, 
 
    mutations: { 
 
    increaseTotalBalance(state,Balance){ 
 
     state.TotalBalance = +state.TotalBalance + +Balance; 
 
    }, 
 
    decreaseTotalBalance(state,Balance){ 
 
     state.TotalBalance = +state.TotalBalance - +Balance; 
 
    }, 
 
    } 
 
}) 
 

 
new Vue({ 
 
    el: '#app', 
 
    store, 
 
    computed: { 
 
    total: function() { 
 
     return Number(this.$store.state.TotalBalance).toFixed(8); 
 
    }, 
 
    profit: function() { 
 
     return Number(this.$store.state.Profit).toFixed(8); 
 
    } 
 
    }, 
 
    methods: { 
 
    inc: function() { 
 
     this.$store.commit('increaseTotalBalance', this.profit) 
 
    }, 
 
    dec: function() { 
 
     this.$store.commit('decreaseTotalBalance', this.profit) 
 
    } 
 
    } 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.0/vue.js"></script> 
 
<script src="https://unpkg.com/[email protected]"></script> 
 

 
<div id="app"> 
 
    <p>{{ total }}, {{ profit }}</p> 
 
    <button @click="inc">Inc</button> 
 
    <button @click="dec">Dec</button> 
 
</div>

+0

を私は本当に今、私の実装上の問題を理解しています。しかし、私はTotal Amountフィールドを 'HTTP.get'レスポンスから設定しています。 ChromeのVueデバッガで確認すると、引用符付きの文字列と同じになります。だから私はフロートを変換するために何をすべきですか? – bl4cksta

+0

Ahhhh。それで大丈夫です。私は 'response.body.TotalAmount'を' Number(response.body.TotalAmount) 'に変更しました。どうもありがとう! – bl4cksta

+0

@ bl4cksta私はそれが助けてうれしいです。 – wostex

関連する問題