2012-03-06 5 views
1

Я использую этот учебник, чтобы создать пользовательский PhoneGap плагин: http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20iOSПользовательские PhoneGap плагин (IOS) Функция Выпуск

я имел успех, используя пример автора, но у меня есть несколько вопросов, которые я не был в состоянии узнать ответы.

Когда функция 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);  
     } 
); 

(который является тестовый код для проверки плагин) также можно записать более стандартным образом? I.e., просто вызов функции Javascript без части nativeFunction?

Я был бы очень признателен за любые материалы, спасибо!

ответ

1

телефонная документация для плагинов сосет. Честно говоря, у меня возникло множество проблем, когда я пытался создать свою собственную. Несколько советов:

причина для ведения

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 Гит - https://github.com/DrewDahlman/ImageFilter

+0

убедитесь, что вы используете PhoneGap конструктор - 'PhoneGap.addConstructor (функция() { если (window.plugins) { window.plugins = {};} ! window.plugins.MyPlugin = новый MyPlugin(); }); ' –

+0

Да, это должно быть в файле вашего плагина js - проверьте этот проект git - https://github.com/DrewDahlman/ImageFilter/blob/master/plugin/ImageFilter.js –

+0

- это дает вам любые ошибки ? или просто не работает вообще? –

Смежные вопросы