Заполнение элемента управления с использованием модели другого элемента управления — проблема со смартфоном

Я попытался получить модель элемента управления, расположенную в другом представлении, и применить эту модель к элементу управления в текущем представлении. Для этого я поместил следующий код в функцию onBeforeRendering() контроллера:

var oModel = sap.ui.getCore().byId('<id of the control in another view>').getModel('<modelName here>');
sap.ui.getCore().byId('<id of the control in the current view>').setModel(oModel, "<modelName here>");

Проблема в том, что эта конструкция хорошо работает на ПК и планшете (андроид) (элемент управления - sap.m.select - заполняется элементами), но не работает на смартфоне (андроид) (элемент управления sap.m.select пуст ).

Как мне это решить?


person keshet    schedule 14.10.2014    source источник
comment
Оба представления отображаются на телефоне? Модели доступны только в том случае, если представления визуализируются.   -  person snjesko    schedule 14.10.2014
comment
Да, оба рендерятся. Я использую элемент управления SplitApp, и первое представление отображается при запуске приложения. Второй отображается, когда я перехожу к нему.   -  person keshet    schedule 14.10.2014
comment
Привет, почему бы вам не использовать глобальную модель, которую могут использовать оба представления? Например, вы можете сделать sap.ui.getCore().setModel(<your shared model data>, <model name>);, а затем сослаться на модель, используя sap.ui.getCore().getModel(<model name>); в обоих представлениях. Дайте мне знать, если это будет работать для вас. С Уважением.   -  person mjd    schedule 15.10.2014


Ответы (1)


Как предложил @mjd в комментарии, я использовал глобальную модель:

sap.ui.getCore().setModel(<shared model data>, "<modelName>");

а затем просто использовал модель по ее названию.

Например:

в page1.controller:

sap.ui.getCore().setModel(data, "selection");

а затем в page2.view (та же конструкция используется в page1.view):

var oSelection = new sap.m.Select({
    id:     'selectionID',
    items: {
        path: "selection>/rootElementName", 
        template: new sap.ui.core.Item({
            text: "{selection>elementName}"
        })
    },
});
person keshet    schedule 18.10.2014