Kontrol populasi menggunakan model kontrol lain - masalah ponsel cerdas

Saya mencoba menempatkan model kontrol pada tampilan lain dan menerapkan model ini ke kontrol pada tampilan saat ini. Untuk melakukannya, saya telah memasukkan kode berikut ke dalam fungsi onBeforeRendering() pengontrol:

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>");

Masalahnya adalah konstruksi ini berfungsi dengan baik di PC dan tablet (android) (kontrol - sap.m.select - diisi dengan item), tetapi ini tidak berfungsi di ponsel cerdas (android) (kontrol sap.m.select kosong ).

Bagaimana cara mengatasi ini?


person keshet    schedule 14.10.2014    source sumber
comment
Apakah kedua tampilan ditampilkan di telepon? Model hanya tersedia jika tampilan dirender.   -  person snjesko    schedule 14.10.2014
comment
Ya, keduanya diberikan. Saya menggunakan kontrol SplitApp dan tampilan pertama ditampilkan saat aplikasi dimulai. Yang kedua ditampilkan saat saya menavigasi ke sana.   -  person keshet    schedule 14.10.2014
comment
Hai, kenapa Anda tidak menggunakan model global yang bisa dimiliki oleh kedua pandangan? Misalnya Anda dapat melakukan sap.ui.getCore().setModel(<your shared model data>, <model name>); dan kemudian mereferensikan model dengan menggunakan sap.ui.getCore().getModel(<model name>); pada kedua tampilan. Beri tahu saya jika ini berhasil untuk Anda. Salam.   -  person mjd    schedule 15.10.2014


Jawaban (1)


Seperti yang disarankan @mjd di komentar, saya telah menggunakan model global:

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

dan kemudian hanya menggunakan model berdasarkan namanya.

Misalnya:

di halaman1.controller:

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

dan kemudian di page2.view (konstruksi yang sama digunakan di 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