2016-12-13 110 views
0

我正在使用OpenUI5作爲我的前端應用程序,並且想要使用 Rx.Observable.fromEvent來處理點擊事件。使用EventDelegate作爲按鈕按下監聽器

例如,我有一個按鈕,並希望得到的反應式編程的好處,我想使用Rx.Observable.fromEvent如下:

let oBtnEdit = this.byId("cal-edit"); 
     var source = Rx.Observable.fromEvent(oBtnEdit, "click"); 
     var subscription = source.subscribe(
     function (x) { 
      console.log('Next: Clicked!'); 
     }, 
     function (err) { 
      console.log('Error: %s', err); 
     }, 
     function() { 
      console.log('Completed'); 
     }); 

但我有以下錯誤: enter image description here

我不知道,我做錯了什麼。我閱讀文檔sap.m.Button,無法配置它,我做錯了什麼。

回答

1

可能的問題是RxJs的fromEvent需要DOM元素,但是您傳遞的是SAP的對象。 試圖改變

Rx.Observable.fromEvent(oBtnEdit, "click"); 

Rx.Observable.fromEvent(oBtnEdit.getDomRef(), "click"); 
+0

我與'無功富= this.byId( 「CAL-編輯」)試圖getDomRef()。 console.log(foo);'和日誌顯示我null。 –

+0

@zero_coding,實際上我對OpenUI5一無所知,所以我在猜測。由於'getDomRef'存在,所以oBtnEdit實際上是一個Control。 [文檔](https://sapui5.hana.ondemand.com/docs/api/symbols/sap.ui.core.Element.html#getDomRef)說_有些元素或控件可能沒有DOM representation_ ... _due它們的當前狀態(例如,初始的,尚未呈現的控制)_。有沒有可能oBtnEdit控件沒有呈現? –

+0

它應該呈現,因爲視圖將首先在控制器之後呈現。 –