我正在使用本教程创建自定义PhoneGap插件: http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20iOS
我使用作者的例子取得了成功,但我有一些问题,我无法找到答案。
创建JavaScript函数时,代码为:
var MyPlugin = {
nativeFunction: function(types, success, fail) {
return PhoneGap.exec(success, fail, "PluginClass", "print", types);
}
};
有没有办法在没有var MyPlugin = {...};
和nativeFunction
的情况下进行设置?换句话说,我们可以定义插件的功能,如myfunc = function()...
其次,假设有一种方法可以执行上述操作,可以使用以下代码:
MyPlugin.nativeFunction(
["HelloWorld"] ,
function(result) {
alert("Success : \r\n"+result);
},
function(error) {
alert("Error : \r\n"+error);
}
);
(这是测试插件的测试代码)也是以更标准化的方式编写的?即,只调用没有nativeFunction
部分的Javascript函数?
我非常感谢任何意见,谢谢!
答案 0 :(得分:1)
插件的phonegap文档很糟糕。老实说,在尝试创建自己的时候,我遇到了很多问题。一些提示:
做的原因
var MyPlugin = {};
是因为这允许我们使用特定于该js对象的内容。 例如:
MyPlugin.myFunction();
我最喜欢的创建插件的方法,就像你的问题一样,是将它们原型化
var MyPlugin = {}; // our object
MyPlugin.prototype.myFunction = function(success,fail,types){
}
制作插件的关键是这个 -
PhoneGap.exec(success,fail,"MyPlugin","myFunction",types);
但是他们遗漏的是,如果我们想要选择我们的插件怎么办?如果我们想要做的不仅仅是传递一个字符串,那么该示例不起作用。修复很容易,但根本没有谈到。
var MyPlugin = {};
MyPlugin.prototype.myFunction = function(success,fail,options){
var defaults = {
foo: '', // these are options
bar: '',
};
// this parses our "options"
for(var key in defaults) {
if(typeof options[key] !== "undefined") defaults[key] = options[key];
}
return PhoneGap.exec(success,fail,"MyPlugin","myFunction",[defaults]);
}
当我们用javascript调用它时 -
var foo = MyPlugin.myFunction(success,fail,{
foo:'hello',
bar:'world'
});
您会注意到大部分的phonegap API都使用这种语法,我发现他们的文档并没有真正谈论如何执行此操作。
我有一篇关于我创建的插件的帖子,你可以查看它以供参考。 博客 - http://www.drewdahlman.com/meusLabs/?p=138 Git - https://github.com/DrewDahlman/ImageFilter