2014-11-05 3 views
2

Каков рекомендуемый способ изменения данных в модели без необходимости повторной установки новой модели на вид?Редактирование модели в json при сохранении ссылки на модель

У меня есть функция, где мне нужно, чтобы вычислить что-то на стороне клиента, и изменить это в моей модели:.

var parsedJSON = $.parseJSON(this.getView().getModel().getJSON()); 
$.each(parsedJSON['UserData']['clockHistory'], function(idx, obj) { 
// do some stuff to clockHistory 
}); 
this.getView().getModel().setProperty("/UserData/clockHistory", clockHistory); 

The getModel() getJSON() только возвращает строку JSON, но не в формате JSON объект, который можно использовать в javascript.

+0

getModel.getData() возвращает объект JSON – Allen

+0

Вы правы сэр. Я получаю объект json, но после его модификации модель не обновляется (с setProperty это). – Pieter

+1

вам также необходимо вызвать oModel.refresh() для обновления – Allen

ответ

5
  1. Чтобы получить JSON объект JSONModel, вызовите this.getView().getModel().getData()
  2. Чтобы обновить обновление данных, вызовите oModel.refresh()
2

Вы даже можете пропустить oModel.refresh() часть, если вы используете this.getView().getModel.getProperty("/UserData/clockHistory/"), чтобы получить нужное значение из модель. getProperty() вернет объект. Объекты создаются по ссылке. Таким образом, любые изменения в новый объект обновит модель:

var object = yourModel.getProperty("/PATH/TO/PROPERTY"); 
 

 
object = "new Value"; //this will update the model as well!

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

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