自定义PhoneGap插件(iOS)功能问题

时间:2012-03-06 19:17:11

标签: iphone ios xcode plugins cordova

我正在使用本教程创建自定义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函数?

我非常感谢任何意见,谢谢!

1 个答案:

答案 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