6

を見つけることができません。現時点では、アプリ内のボタンのクリックハンドラを呼び出すscanBarcode、cordova.exeを呼び出す関数がdlScanner と呼ばれているとそれが機能を持っている、呼び出しがオブジェクト汎用のカスタムプラグインは、私はコルドバベースのWindows 8の電話アプリにカスタム、コルドバのプラグインを作成してインストールする必要がありますエントリのjsオブジェクト

をcordova.execすることができますjsオブジェクトを見ることができませんcordova.exec

クリックハンドラはこれです:

 $(document).ready(function() { 
     $('#cmdOne').click(function() { 
      dlScanner.scanBarcode(
       function (results) { 
        alert(results); 
      }), function (err) { 
        alert(err); 
      }, 'lowercaseworld' 
     }); 
    }); 

エラーメッセージはこれです:

 TypeError: Cannot read property 'scanBarcode' of undefined 

コンテキスト:MicrosoftプラグインジェネレータPluginGeneratorを使用しました。これはhereでした。それから私はVSは、以前私のために作成した汎用的なコルドバのWindows 8携帯電話のアプリにそのプラグインをインストールするには、Visual Studioのコミュニティ2015年には、アプリのconfig.xmlファイルに、ビューデザイナを使用していました。 srcおよびWWWディレクトリとその中plugin.xmlファイル

があります(上記参照)dlScannerディレクトリではアプリのconfig.xmlファイル

<vs:plugin name="com.contoso.dlScanner" version="0.1.0" src="C:\Users\TestAndDemo\dlScanner" /> 

でこれを置く工程をインストールプラグイン

 <js-module src="www/dlScanner.js" name="dlScanner"> 
     <clobbers target="dlScanner" /> 
    </js-module> 

    <!-- wp8 --> 
    <platform name="wp8"> 
     <config-file target="config.xml" parent="/*"> 
      <feature name="dlScanner"> 
       <param name="wp-package" value="dlScanner"/> 
      </feature> 
     </config-file> 

     <source-file src="src/wp/dlScanner.cs" /> 

WW:plugin.xmlのファイルはこれですdlScanner.jsファイル/ wのこの含まれています

  var dlScanner = { 
      scanBarcode: function (successCallback, errorCallback, strInput) { 
       cordova.exec(successCallback, errorCallback, "dlScanner", "scanBarcode", [strInput]); 
      } 
     } 
module.exports = dlScanner; 

私はdlScannerオブジェクトを見るためにクリックハンドラを有効にしなければならないのですか?

おかげ

+0

他のWin8コードバプロジェクトでは、このコードを実行するwww/cordova_plugins.jsファイルがあります: 'cordova.define( 'cordova/plugin_list'、function(require、exports、module){module。exports = ['私のBlankAppは作成したVSにそれがありません。だから私はそのファイルが必要か、www/dlScanner.jsファイルを動かす必要があると思います。どちらも 'module.exports'アイデアですか? – pdschuller

答えて

2

はコルドバが初期化しているとdevicereadyイベントが放出された後にプラグインを呼び出すようにしてください。このイベントの詳細はこちらhttp://docs.phonegap.com/en/3.5.0/cordova_events_events.md.html#devicereadyをご覧ください。

+0

「プラグインを呼び出す」という意味がわかりません。プラグインの初期化メソッドが表示されず、わかりません。単にクリックハンドラメソッドです。説明してください。 – pdschuller

+0

JavaScript環境にネイティブ機能を公開するCordovaプラグインは、ドキュメントが読み込まれるほど早く準備ができていません。そのため、プラグインによって公開されているメソッドにアクセスしようとすると、その未定義のエラーが発生します。 devicereadyのドキュメントから完全な例を複製してみてください。 "//デバイスAPIを使用するには安全です"という行の後にコードを追加する必要があります。 –

+0

私はデバイスの機能に到達することはなかったし、このヒントは解決策ではありませんでした。しかし、deviceReadyイベントは別の問題を解決するのに役立ちました。 – pdschuller

1

いくつかの問題がありました:

ビューデザイナーは、VSで自動プラグインインストーラは私のindex.htmlファイル内dlScanner.jsファイルへの参照を追加したことはありません。だから私は、scriptsディレクトリにそのファイルを移動し、cordova.exec実行を作り、私のクリックハンドラがdlScannerコードを打つ始め

<script src="scripts/index.js"></script> 

のindex.html

でこれを追加する必要がありました。それから私はmodule.exportsはラインが走ったときにコルドバの準備ができていなかった(と思う)私に言ったので、私はonDeviceReady

function onLoad() { 
document.addEventListener("deviceready", onDeviceReady, false); 
    } 

function onDeviceReady() { 
     module.exports = dlScanner; 
    } 
をmodule.exportsは物を入れて、このエラー

module is undefined 

を取得し始めました

ありがとう@Vlad

関連する問題

 関連する問題