SAPui5 создать запись с дочерними записями

Я хочу создать запись и ее дочерний элемент из ui5, поэтому я использовал подход создания записи, проблема в том, что я хочу, чтобы пользователь мог обновлять значения дочерних узлов, поэтому я сделал следующее

var oParentContext = this._oODataModel.createEntry("/Parent",
{ changeId: "edit", properties: {object}, success: this._fnEntityCreated.bind(this), error: this._fnEntityCreationFailed.bind(this) });
    for (var i = 0; i < childArray.length; i++) {
                var child = childArray[i];

                aChildCtx = this._oODataModel.createEntry("/child", {
                    changeId: "edit",
                    properties: child,
                    context: oParentContext
                });
                aChildEntries.push(aChildCtx.getPath().substring(1));
            }
    this.getView().setBindingContext(oParentContext);
 // I attached also the relation to the front end
this.getView().getModel().setProperty("ToChild", aChildEntries, oParentContext);

В представлении я сделал привязку отношения ToChild к таблице, чтобы пользователь мог вводить свои значения.

Отображение родительского и дочернего элементов работает, однако я столкнулся с проблемой, заключающейся в том, что представление выдает запрос на получение Odata с временным идентификатором/ToChild. Я не мог найти никакого решения для этого. Как сделать глубокую вставку в стандарте?

P.S. Я не хочу использовать deep_create

Спасибо

С уважением


person Ibrahim    schedule 15.01.2020    source источник


Ответы (1)


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

Я вижу два способа убедиться, что дети будут созданы с окончательным родительским идентификатором:

  1. Отправляйте родительский и дочерний запросы на создание синхронно. Подождите, пока родительский запрос на создание не будет успешно возвращен, прежде чем создавать дочерние элементы.
  2. Отправьте оба как набор изменений. Пусть реализация службы oData сначала создаст родительский элемент, а затем дочерние элементы с уже созданным родительским идентификатором. (Теперь вы устанавливаете changeId, API указывает changeSetId)
person Samleijenhorst    schedule 16.01.2020
comment
Привет. Эта проблема возникает не во время сохранения записей, а во время отображения формы. - person Ibrahim; 17.01.2020