Связанное хранилище не отображает значения после добавления записи в хранилище

Я хочу сделать некоторые манипуляции в формуле на основе магазина. Когда viewmodel загружает эту формулу, она срабатывает и выполняет манипуляции правильно, но когда я добавляю запись в хранилище, она не срабатывает.

Я создал скрипку, представляющую вышеуказанное поведение. Вы можете найти его здесь. По нажатию кнопки в магазин добавляется новая запись. Таким образом, формула должна срабатывать, но это не так, тогда как поля, определенные в объекте данных viewmodel, работают нормально.

Погуглив я обнаружил, что эта привязка должна быть глубокой копией. Так что я тоже пробовал это, но это не решило проблему.

formulas: {
   firstTestStoreRecord: {
     bind: {
        bindTo: '{testStore}',
        deep: true
     },
     get: function(testStore) {
        return testStore.getAt(0);
     }
   }
}

Любая идея, как это может быть достигнуто?


person Super Man    schedule 19.11.2019    source источник
comment
Я считаю, что вы не можете привязываться к магазину. Возможно, эта ветка поможет вам сенча. com/forum/ Чтобы решить вашу проблему, лично я бы добавил прослушиватель изменений данных в хранилище, который устанавливает «firstStoreRecord» на vm. И я бы привязал свою формулу к этому.   -  person ground_call    schedule 20.11.2019
comment
Я согласен с @ground_call. Кроме того, вы можете вручную обновить привязку хранилища в модели представления.   -  person pvlt    schedule 21.11.2019
comment
@ground_call Вы можете, однако это было добавлено в 6.50.   -  person Evan Trimboli    schedule 05.12.2019


Ответы (1)


Используется событие datachanged в магазине, так как привязка не работает с обновлением данных магазина.

stores: {
  firstTestStoreRecord: {
    model: 'Common.model.firstTestRecord',
    autoLoad: false,
    listeners: {
      datachanged: () => {console.log('triggered')}
    }
}
person Super Man    schedule 04.12.2019
comment
Возможность глубокой привязки к хранилищу была добавлена ​​в версии 6.5 IIRC. Если вы переключите свою исходную скрипку на эту версию, вы сможете ее увидеть. В противном случае вам придется придерживаться чего-то подобного. - person Evan Trimboli; 05.12.2019
comment
@EvanTrimboli да, я это заметил, но искал решение для версии 6.0. - person Super Man; 05.12.2019