我为XUI创建了一个插件,例如:
xui.extend({
myPlugin : function(){
var options = [];
function methodOne(obj){
}
function methodTwo(){
}
}
});
现在我可以致电:
<script type="text/javascript">
xui.ready(function(){
// call my plugin on an XUI object
x$('element').myPlugin();
});
</script>
但是我还需要能够访问插件中的一些方法,比如这样(这段代码不起作用,但说明了我想要实现的目标)
<script type="text/javascript">
xui.ready(function(){
// call my plugin on an XUI object
x$('element').myPlugin();
var foo = bar;
// call one of my methods?
xui.fn.myPlugin.methodOne(foo);
});
</script>
任何对XUI移动框架有更多经验的人都能伸出援助之手吗?干杯
编辑**
以下作品虽然可能不是很优雅......
xui.extend({
myPlugin : function(){
// create an API object
var api = {
'publicOne' : function(obj){
return methodOne(obj)
}
};
// add our API object to prototype
xui.fn.myPlugin.api = api;
/**
* the functions of the plugin
**/
// we'll expose this in the API object
function methodOne(obj){
// Do something with obj...
}
function methodTwo(){
}
}
});
然后在页面上我可以使用它:
<script type="text/javascript">
xui.ready(function(){
// call my plugin on an XUI object, which does its thing
x$('element').myPlugin();
// arbitary
var foo = x$('#bar');
// call one of the methods statically
xui.fn.myPlugin.api.pluginOne(foo);
});
</script>
为了解释目的,我正在创建一些与JQTouch非常相似的东西,但当然不依赖于巨型jQuery并且只是坐在XUI之上。我有一个处理页面导航的方法,它处理“页面”转换,但我需要能够以编程方式触发该方法。
也许上面会帮助其他XUI人员,它目前正在为我工作,但也许可以改进?
答案 0 :(得分:0)
xui.extend({
myPlugin : function(callback){
var options = [];
function methodOne(obj){
}
function methodTwo(){
}
if(typeof callback === 'function') {
return callback(this);
}
}
});
然后这样称呼:
<script type="text/javascript">
xui.ready(function(){
// call my plugin on an XUI object
x$('element').myPlugin(function(myPublic) {
var foo = bar;
// call one of my methods?
myPublic.methodOne(foo);
});
});
</script>
这是未经测试但应该有用。