2017-09-19 37 views
1

我正在使用Vuex並添加了vee-validate(found here)。我正在使用商店對象,並且從其中一個操作中,我希望能夠根據服務器響應將自定義錯誤添加到錯誤集合中。是否有可能訪問通常用作屬性的vee驗證的全局errors(ErrorBag)集合?在Store.js中使用插件(VeeValidate)

根據this,我應該可以添加到錯誤對象,但this是不一樣的,當我在我的商店對象顯然。

例如:

<span id="error-message" v-if="errors.has('phone')">error message</span> 

我希望有訪問errors集合的方式。有沒有辦法導入VeeValidate來獲得我需要的東西?以某種方式全球化?

+0

將組件中的錯誤對象作爲參數傳遞給操作。 – Bert

+0

我真的很喜歡這個想法。但是當我在動作之前登錄'this。validator.errors.items'時,它會向我顯示一個空數組(這是另一個問題),但是當我從動作本身記錄它時,它是空的。我只能通過一個額外的參數來操作? – muttley91

+0

我相信動作和變化都會接受一個單一的「有效載荷」參數,您可以讓一個對象傳遞多個參數。你也可以解構它們。所以它會像'myAction({commit,state},{errors,other}){...}',你可以用dispatch(「myAction」,{errors:this.errors,other})來調用。 '。 – Bert

回答

0

我會建議將動作中出現的錯誤添加到商店中,並從計算屬性中訪問該組件。

這遵循單向數據流原則,並且由於計算結果是被動的,因此應該爲視圖提供異步更新的機會。

也許:

<span id="error-message" v-if="allErrors.has('phone')">error message</span> 

computed: { 
    allErrors() { 
    return this.$validator.errors 
     .concat(this.$store.state.asyncErrors) 
} 

細節需要充實。

相關問題