เติมการควบคุมโดยใช้แบบจำลองของการควบคุมอื่น - ปัญหาสมาร์ทโฟน

ฉันพยายามทำให้โมเดลของการควบคุมอยู่ในมุมมองอื่น และใช้โมเดลนี้กับการควบคุมในมุมมองปัจจุบัน เพื่อทำเช่นนั้น ฉันได้ใส่โค้ดต่อไปนี้ลงในฟังก์ชัน 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>");

ปัญหาคือโครงสร้างนี้ทำงานได้ดีบนพีซีและแท็บเล็ต (android) (ตัวควบคุม - sap.m.select - เต็มไปด้วยรายการ) แต่สิ่งนี้ใช้ไม่ได้กับสมาร์ทโฟน (android) (การควบคุม 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