OpenUI5 Treetable: получить выбранные строки и их данные модели

Размещение new позволяет вам создать объект в уже выделенной памяти.

Возможно, вы захотите сделать это для оптимизации (это быстрее не перераспределять все время), но вам нужно повторно -конструировать объект несколько раз. Если вам нужно перераспределять ресурсы, было бы более эффективно выделять больше, чем вам нужно, даже если вы еще не хотите его использовать.

Devex дает хороший пример :

Стандартный C ++ также поддерживает оператор размещения new, который строит объект в предварительно выделенном буфере. Это полезно при создании пула памяти, сборщика мусора или просто в том случае, когда безопасность производительности и исключений является первостепенной (нет опасности сбоя распределения, поскольку память уже выделена, а построение объекта в предварительно выделенном буфере занимает меньше времени) :

blockquote>
char *buf  = new char[sizeof(string)]; // pre-allocated buffer
string *p = new (buf) string("hi");    // placement new
string *q = new string("hi");          // ordinary heap allocation

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

Освобождение места размещения new

Вы не должны освобождать все объекты, которые используют буфер памяти. Вместо этого вы должны удалить [] только исходный буфер. Затем вам придется вручную вызвать деструкторов ваших классов вручную. Для хорошего предложения по этому вопросу см. FAQ по Stroustrup: Есть ли «удаление места размещения» ?

0
задан Vitim.us 5 March 2019 в 18:36
поделиться

2 ответа

Есть небольшое изменение, которое вы можете сделать, чтобы получить правильные данные в вашем цикле for.

  1. Получите bindingContext элемента, который выбран согласно информации индексов.

var sPath = TreeTable.getRows()[0].getBindingContext()

  1. Получить данные из модели в виде:

[111 ]

0
ответ дан Nandan Chaturvedi 5 March 2019 в 18:36
поделиться

Вот как я это решил:

var oJSON = {};
var aData = [];
var oTable = this.getView().byId("TreeTable");
var aIndicies = oTable.getSelectedIndices();
var oSelect = this.getView().byId("selectStandort").getSelectedKey();
for (var i=0; i<aIndicies.length; i++) {
    var oTableContext   = oTable.getContextByIndex(aIndicies[i]);
    var rowData         = oTable.getModel("jobs").getProperty(oTableContext.getPath());
    aData.push(rowData);
}

oJSON.jobs = aData;
oJSON.standort = oSelect;
0
ответ дан DubZ 5 March 2019 в 18:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: