2017-03-05 26 views
5

Tôi có hai mô-đun trong cửa hàng vuex của mình.Thay đổi trạng thái mô-đun khác từ một mô-đun trong Vuex

var store = new Vuex.Store({ 
    modules: { 
     loading: loading 
     posts: posts 
    } 
}); 

Trong mô-đun loading, tôi có một tài sản saving có thể được thiết lập hoặc true hoặc false và cũng có một chức năng đột biến tên TOGGLE_SAVING để thiết lập thuộc tính này.

Trong mô-đun posts, trước và sau khi tìm nạp bài đăng, tôi muốn thay đổi thuộc tính saving. Tôi đang làm điều đó bằng cách gọi commit('TOGGLE_SAVING') từ một trong các hành động trong mô-đun posts.

var getPosts = function (context) { 
    contex.commit(TOGGLE_LOADING); 
}; 

Khi nó đã cố gắng để thực hiện, tôi đã sau lỗi trong giao diện điều khiển

[vuex] unknown local mutation type: TOGGLE_LOADING, global type: posts/TOGGLE_LOADING 

Làm thế nào tôi có thể đột biến trạng thái trong một mô-đun sử dụng commit?

Trả lời

4

Hãy thử nó với các thông số sau đây theo đề nghị here;

commit('TOGGLE_SAVING', null, { root: true }) 

Bạn có thể phải đặt namespaced là true.

+0

Tuyệt vời. Điều đó hoạt động rất tốt. Cảm ơn –

+1

Nếu bạn đang sử dụng các mô-đun và không gian tên, đừng quên thêm không gian tên vào 'commit', như' commit ('namespace/TOGGLE_SAVING', null, {root: true}) ', nếu không nó sẽ không công việc. – brainbag

1

bạn có thể sử dụng action để thực hiện đột biến được xác định trong mô-đun khác, khi đó bạn sẽ sửa đổi trạng thái trong mô-đun khác.

như thế này:

posts: { 
    actions: { 
    toggleSavingActions(context) { 
     // some actions 
     context.commit("TOGGLE_SAVING"); // defined in loading module 
    } 
    } 
} 
+0

Đây là cách chính xác tôi đã thực hiện nó. Tôi cũng đặt "namespace: true" trong cả hai mô-đun. Nhưng tôi đang nhận '[vuex] loại đột biến cục bộ không xác định: TOGGLE_LOADING, loại toàn cầu: bài đăng/TOGGLE_LOADING' –

+1

oh yes.by mặc định, hành động, đột biến và getters bên trong mô-đun vẫn được đăng ký theo không gian tên chung .so bạn có thể xóa không gian tên thuộc tính hoặc sử dụng cam kết ('someMutation', null, {root: true}) – Julien

Các vấn đề liên quan