@vuejs_ru

Страница 2889 из 3900
ISec
13.05.2018
21:27:29
Это поможет? https://www.npmjs.com/package/vue-model-vuex
не избавляет от написания обработчиков(

Victor
13.05.2018
21:27:38
Ну хорошо, а вот так?

https://github.com/maoberlehner/vuex-map-fields

export default { computed: { ...mapFields([ 'form.firstName', 'form.lastName', 'form.message', // ... ]), }, };

Google
Victor
13.05.2018
21:28:17
Куда уж проще???

Пост в поддержку последней либы: https://markus.oberlehner.net/blog/form-fields-two-way-data-binding-and-vuex/

Dmitry
13.05.2018
21:28:43
AI пожалуйста выкати на гитхаб, который код пишет ?

ISec
13.05.2018
21:29:16
https://github.com/maoberlehner/vuex-map-fields
вроде бы то, что нужно, посмотрю, спасибо

Короче, в итоге написал обертку: // ~/src/utils/vuex_setter.js import store from '../store'; const getNamespace = (namespace) => { return (namespace) ? namespace + '/' : ''; } export const mapSetter = (namespace, state = {}) => ( Object.keys(state).reduce((acc, stateName) => { acc[stateName] = { get: () => store.state[namespace][stateName], }; if (state[stateName] !== null) { acc[stateName].set = (val) => store.commit( getNamespace(namespace)+state[stateName], val ); } return acc; }, {}) ); В компоненте: import { mapSetter } from './utils/vuex_setter'; ... computed: { ...mapSetter('main', { inn: 'setInn', certificates: 'fillSertificates', }), } В хранилище ничего модифицировать не пришлось, там все по докам.

Ivan
13.05.2018
22:01:24
а для чего мапить каждое отдельное поле? почему нельзя использовать 1 сеттер ,в котором передавать имя поле которе хочется изменить?

которые в setInn и fillSertificates?

просто логики в гетерах и сеттерах нет как я вижу из кода обертки

Ivan
13.05.2018
22:04:07
я хочу понять задачу, для чего на каждый параметр свою мутацию делать

ISec
13.05.2018
22:04:46
Ну смотри, есть 20 инпутов

Ivan
13.05.2018
22:04:52
я раньше делал так же, но отказался изза кол-ва кода

ISec
13.05.2018
22:05:41
значение каждого инпута хранится в Vuex, потому что используется и после разрушения компонента

Google
ISec
13.05.2018
22:05:57
и тут два варианта

либо писать вручную геттеры и сеттеры, либо маппить отдельно геттеры и отдельно сеттеры, как в доках

во втором случае придется писать кучу обработчиков и отпадывает использование v-model

если есть вариант удобнее, буду рад услышать

Ivan
13.05.2018
22:09:35
а при изменении важно что бы в vuex данные сразу менялись, или можно их при нажатии "сохранить" обновлять?

ISec
13.05.2018
22:10:46
хм

скорее всего, можно и по кнопке. вот только разницы в размере кода я не вижу, в data() все равно объявлять придется, плюс обработчик по кнопке

Ivan
13.05.2018
22:18:39
в computed пишем функцию dataLocal(){ return {...this.$store.state.abc} } а при сохранить, dataLocal в commit в vuex переносим

таким образом при ошибке изменении формы, в vuex данные остаются норм используются стандартные средства vue

и не нужно на каждый параметр мутатор создавать

я так делаю

ISec
13.05.2018
22:25:13
в computed пишем функцию dataLocal(){ return {...this.$store.state.abc} } а при сохранить, dataLocal в commit в vuex переносим
а изменять данные как? Получается, что если я в v-model передам dataLocal.someProp , то получится изменение хранилища без мутации

надо это как-то в обычный data() загнать

Страница 2889 из 3900