2012-03-22 1 views
0

Я использую DOJO JsonRestStore. Я изменяю поля в объекте.Обновление/изменение объекта, извлеченного из хранилища dojo/JsonRestStore

Какова была бы правильная процедура сохранения измененного объекта обратно в хранилище данных и службу REST?

Обновление: удалена информация о сетке, так как она не была частью проблемы.

ответ

1

Видимо, я предположил, что возвращенный элемент будет синхронизирован с хранилищем данных. Она не появляется, так и должны быть обновлены вручную с помощью:

store.setValue(item, field, value); 

Я также надеялся на команду, эквивалентную JPA слияния. Если вы перезаписать предшествующий объект:

store.newItem(updatedVersionOfItem); 

и элемент имеет тот же уникальный идентификатор, он будет перезаписывать старый предмет, похожий на слияние.

Кто-нибудь знает, есть ли какая-нибудь фабрика, которая создаст геттеры и сеттеры для элемента, который вызовет store.setValue() для каждого поля?

Я полагаю, что это будет что-то вроде следующего:

var wrappedItem = itemWrapperFactory.createWrapper(item, store); 
... 
//Some where in createWrapper(...), this is just the concept 
for (var itemField in itemFieldList) 
this.__defineGetter__(itemField[index] , function(val){ 
    store.setValue(item, itemField[index], val);  
}); 

Я бы тебе мой собственный, как сво аккуратный кусок архитектуры.

+0

Если вы используете dojox.data.JsonRestore и dojox.grid.DataGrid, если вы настроили свойство «хранилище» сетки как ваш JRS и задали свои ячейки как редактируемые ... изменения СЛЕДУЕТ определенно отразиться на магазин, когда вы обновляете свойства из сетки ... У вас есть что-то еще между ними? – PEM

+0

Справа. Я не обновлял их из сетки, я просто извлекал их, используя информацию, полученную из сетки. Это был один из моих проблем. – Greg

1

Обычно, store.save() должно быть достаточно ... Если нет, это означает, что у вас есть проблема между сеткой и магазином.

+0

Возможно, что вы ошибаетесь. Я извлек элемент с помощью fetchitembyid(), изменил его, назвал store.save(), и он не вернулся к службе. isDirty() является ложным после изменения объекта. – Greg

Смежные вопросы