6

Cordova tabanlı bir Windows 8 telefon uygulamasına özel, cordova eklentisi oluşturmalı ve yüklemem gerekir. Şu anda, app düğmesi tıklama işleyicisi bir fonksiyon, scanBarcode çağırır olan dlScanner denir cordova.exe çağıran fonksiyonu ile,Windows 8 için genel özel eklenti Giriş js nesnesini bulamadı

Bu nesneyi cordova.exec için çağrı yapan js nesne göremiyorum

 TypeError: Cannot read property 'scanBarcode' of undefined 

:

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

hata mesajı şudur: cordova.exec

tıklama işleyicisi şudur Bağlam: Ben PluginGenerator, Microsoft eklenti jeneratör, here bulundu. Ardından, Visual Studio Community 2015'teki app config.xml dosyasındaki View Designer'ı kullanarak, bu eklentiyi VS'nin daha önce benim için yarattığı genel cordova Windows 8 telefon uygulamasına yükledim. src ve www dizinleri ve bu ise bir plugin.xml dosyası

vardır (yukarıda başvurulan) dlScanner dizinde uygulamanın Config.xml dosyası

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

bu koymak süreci yüklemek eklentisi

 <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 dosya şudur dlScanner.js dosyası w/Bu içerir:

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

Ne dlScanner nesneyi görmek için tıklayın işleyicisi etkinleştirmek için yapmanız gerekiyor? Cordova başlatıldı ve deviceready olay yayılan edildikten sonra

Teşekkür

+0

Diğer Win8 Cordova projelerinde bunu çalıştıran bir www/cordova_plugins.js dosyası bulunduğunu görüyorum: 'cordova.define ('cordova/plugin_list', fonksiyon (ihtiyaç, ihracat, modül) {module.export = ['VS'nin oluşturduğu BlankApp'm buna sahip değil. Sanırım bu dosyaya ihtiyacım var ya da www/dlScanner.js dosyamı çalıştırmam gerekiyor. İkisi de 'module.exports' Fikirlerini mi? – pdschuller

cevap

2

deneyin eklentisi aramak için. Bu etkinlik hakkında daha fazla bilgiye buradan ulaşabilirsiniz: http://docs.phonegap.com/en/3.5.0/cordova_events_events.md.html#deviceready.

+0

"Eklentiyi Ara" ile ne kastettiğimi bilmiyorum Eklenti için bir başlatma yöntemi görmüyorum veya bilmiyorum, sadece bir tıklama işleyicisi yöntemi. Lütfen açıkla. – pdschuller

+0

Yerel işlevselliği JavaScript ortamına maruz bırakan Cordova eklentileri, belge yüklendiği kadar erken hazır değildir. Bu nedenle, eklentinin maruz kaldığı yöntemlere erişmeye çalıştığınızda, tanımlanmamış bir hatayı alırsınız. Tüm örneği, deviceready belgelerinden kopyalamaya çalışın. Kodunuzu "// Artık cihaz API'lerini kullanmak için güvenli" satırından sonra eklemelisiniz. –

+0

Hiçbir zaman cihaz işlevselliğine gitmedim ve bu ipucu çözüm değildi. DeviceReady olayı bana başka bir konuda yardımcı oldu. – pdschuller

1

vardı birkaç sorunlar:

VS Görünüm Tasarımcısı, otomatik eklenti-yükleyici benim index.html dosyasında dlScanner.js dosyaya başvuru eklendi olmadı. Bu yüzden komut dizinine bu dosyayı taşımak ve cordova.exec denemesini yaptı ve benim tıklama işleyicisi dlScanner kodunu vurmaya başladılar

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

index.html

bu eklemek zorunda kaldı. Sonra o halde ben
function onLoad() { 
document.addEventListener("deviceready", onDeviceReady, false); 
    } 

function onDeviceReady() { 
     module.exports = dlScanner; 
    } 
onDeviceReady

yılında module.exports şey koymak, module.exports hat çalıştırdığınızda o cordova hazır değildi (Sanırım) bana bu hatayı

module is undefined 

başlarken

Teşekkürler @Vlad