2017-06-21 43 views
0

有什麼方法可以重寫Titanium中的Widget元素的click事件偵聽器?重寫小部件的單擊事件偵聽器 - Appcelerator Titanium

我有一個小部件,並且在我使用該小部件的控制器中,我需要對小部件的單擊操作執行一些其他操作,而不是在小部件中定義的操作。

有什麼辦法可以實現它嗎?

TIA :)

回答

0

要覆蓋一個給定的功能,我會導出setter函數在widget:

構建窗口小部件,你將永遠做 widget.xml:

<Alloy> 
    <Button onClick="doClick" title="Hello World!" /> 
</Alloy> 

出口setter函數$.overrideListener能夠從小部件外部覆蓋clickHandler小部件 小部件。JS:

function doDefaultStuff(e){ 
    //Do default stuff 
} 
var clickHandler = doDefaultStuff 
function doClick(e){ 
    clickHandler(e) 
} 
$.overrideListener = function(callback){ 
    clickHandler = callback 
} 

INDEX.XML:

<Alloy> 
    <Window> 
     <Widget id="widget_id" src="com.widget.somewidget"></Widget> 
    </Window> 
</Alloy> 

覆蓋的clickHandler如果你希望做一些不同比的默認行爲 index.js:

function doCustomStuff(e){ 
    //Do Custom Stuff 
} 
$.widget_id.overrideListener(doCustomStuff) 
+0

謝謝! :) – Porwal

1

是的,當然你可以覆寫任何你想要的。

採用合金中,您將使用經典模式由ID參數&訪問插件,你可以簡單的使用控件變量名。


假設你有一個小部件com.widget.somewidget在XML文件爲:

INDEX.XML

<Alloy> 
    <Window> 
     <Widget id="widget_id" src="com.widget.somewidget"></Widget> 
    </Window> 
</Alloy> 

部件.xml

<Alloy> 
    <Button id="widget_button" title="Hello World!" /> 
</Alloy> 

widget.js,你現在將導入您要覆蓋這樣的點擊事件元素:

$.exportedButtonId = $.widget_button; 

最後,您可以覆蓋像這樣的按鈕單擊事件:

index.js

var widgetButton = $.widget_id.exportedButtonId; 
widgetButton.addEventListener('click', function (e){}); 

這是你如何能更靈活地利用小部件非常簡單的例子,但實施是無止境的,取決於應用需求。所以祝你好運!

+0

謝謝,Prashant! :) – Porwal