第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過另一個控制器調(diào)用函數(shù)時,無法讀取未定義的屬性“ byId”

通過另一個控制器調(diào)用函數(shù)時,無法讀取未定義的屬性“ byId”

三國紛爭 2021-05-10 17:32:09
我有兩個控制器和一個XML文件。我想從第一個控制器調(diào)用第二個控制器的功能。該功能應(yīng)該更改與第二個控制器關(guān)聯(lián)的xml文件的文本。這就是我從第一個調(diào)用第二個控制器的功能的方式:sap.ui.controller("project.controller.one").set("pancakes");這是第二個控制器中的功能:set: function (text) {     alert(text);     this.getView().byId("label0").setText(text);     }該XML只是有一個Label用id的label0。我收到以下錯誤:未捕獲的TypeError:無法讀取未定義的屬性'byId'每當(dāng)我到達(dá)這條線:this.getView().byId("label0").setText(text)但是,如果將其放置在onInit控制器2的中:this.getView().byId("label0").setText("bananas")那么標(biāo)簽將正確更改為“香蕉”。我想念什么?
查看完整描述

1 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個贊

該方法sap.ui.controller將返回一個新的控制器實(shí)例,如文檔中所述

如果僅給出名稱,則返回命名控制器類的新實(shí)例。

因此,它很可能會返回與視圖不關(guān)聯(lián)的控制器的副本,因此將找不到該副本。該方法本身也已被棄用,因此,我不建議在較新的UI5版本上一般使用該方法。

在兩個控制器之間進(jìn)行通信的首選方式是使用sap.ui.core.EventBus。

在第二個控制器中,您首先要訂閱中的事件onInit,然后將其綁定到函數(shù):

onInit: function() {
    sap.ui.getCore().getEventBus().subscribe("Controller2", "set", this.setFromEvent, this);
        // ....
        }

第一個和第二個參數(shù)是通道和事件名稱,您可以自由選擇。第三個參數(shù)是要調(diào)用的方法,第四個參數(shù)將用作this該方法內(nèi)部的值。

為了觸發(fā)事件,您可以在其他控制器中使用EventBus的publish方法:

sap.ui.getCore().getEventBus().publish("Controller2", "set", { value: "pancakes" });

第一個和第二個參數(shù)是與您上面的訂閱對應(yīng)的頻道和事件名稱。第三個參數(shù)是帶有可發(fā)送數(shù)據(jù)的對象,您可以自由選擇該數(shù)據(jù)。

當(dāng)然,您還需要setFromEvent在第二個控制器中創(chuàng)建方法:

setFromEvent: function(sChannelId, sEventId, oData) {
    this.set(oData.value);
    }

此方法的參數(shù)對應(yīng)于傳遞給上述publish方法的值。


查看完整回答
反對 回復(fù) 2021-05-20
  • 1 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號