覆盖小部件的点击事件侦听器 - Appcelerator Titanium
Override click event listener of a widget - Appcelerator Titanium
有什么方法可以覆盖Titanium中Widget元素的点击事件监听器吗?
我有一个小部件,在我使用该小部件的控制器中,我需要在点击该元素时执行一些不同于小部件中定义的其他操作。
有什么方法可以实现吗?
TIA :)
是的,当然你可以覆盖任何你想要的。
使用 Alloy,您将通过 id 参数访问小部件,使用经典模型,您只需使用小部件变量名。
假设,您的 XML 文件中有一个小部件 com.widget.somewidget:
index.xml
<Alloy>
<Window>
<Widget id="widget_id" src="com.widget.somewidget"></Widget>
</Window>
</Alloy>
widget.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){});
这是您如何更灵活地利用小部件的最基本示例,但实现是无止境的,取决于应用程序要求。所以祝你好运!
要覆盖给定的函数,我会在小部件中导出一个 setter 函数:
像往常一样构建小部件
widget.xml:
<Alloy>
<Button onClick="doClick" title="Hello World!" />
</Alloy>
导出 setter 函数 $.overrideListener
以便能够从小部件外部覆盖 clickHandler
widget.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)
有什么方法可以覆盖Titanium中Widget元素的点击事件监听器吗?
我有一个小部件,在我使用该小部件的控制器中,我需要在点击该元素时执行一些不同于小部件中定义的其他操作。
有什么方法可以实现吗?
TIA :)
是的,当然你可以覆盖任何你想要的。
使用 Alloy,您将通过 id 参数访问小部件,使用经典模型,您只需使用小部件变量名。
假设,您的 XML 文件中有一个小部件 com.widget.somewidget:
index.xml
<Alloy>
<Window>
<Widget id="widget_id" src="com.widget.somewidget"></Widget>
</Window>
</Alloy>
widget.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){});
这是您如何更灵活地利用小部件的最基本示例,但实现是无止境的,取决于应用程序要求。所以祝你好运!
要覆盖给定的函数,我会在小部件中导出一个 setter 函数:
像往常一样构建小部件 widget.xml:
<Alloy>
<Button onClick="doClick" title="Hello World!" />
</Alloy>
导出 setter 函数 $.overrideListener
以便能够从小部件外部覆盖 clickHandler
widget.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)