2015-06-30 25 views
8

Büyük sayılar için gereksinimlerimi işlemek için BigNumber library of MikeMcl kullanıyorum. Bu kitaplığı Ionic/Angular project'da kullanıyorum. Benim kodunda Şimdi Javascript library Aygıtta çalışmıyor

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <title></title> 

    <!-- compiled css output --> 
    <link href="css/ionic.app.min.css" rel="stylesheet"> 
    <link href="css/style.css" rel="stylesheet"> 

    <!-- ionic/angularjs js --> 
    <script src="lib/ionic/js/ionic.bundle.min.js"></script> 

    <!-- cordova script (this will be a 404 during development) --> 
    <script src="lib/ngCordova/dist/ng-cordova.min.js"></script> 
    <script src="cordova.js"></script> 

    <!-- ********* BIGNUMBER library ********* --> 
    <script src='lib/bignumber.js/bignumber.min.js'></script>  

    <script src="js/app.js"></script> 
    <script src="js/controllers.js"></script> 
    <script src="js/services.js"></script> 

    </head> 
    <body ng-app="starter"> 
    <ion-nav-view></ion-nav-view> 
    </body> 
</html> 

, ben mesela bu kütüphaneyi kullanabilirsiniz:

olarak Github tarihinde açıkladı yüklemek ve bu kütüphaneyi kullanma yolu html senaryo Tage dahil etmektir

x = new BigNumber(123.4567) 
y = BigNumber('123456.7e-3') 
z = new BigNumber(x) 
x.equals(y) && y.equals(z) && x.equals(z)  // true 

Bunu test ettim ve Chrome'da ve Safari'de (cihazda bile) iyi çalışıyor.

Ama PhoneGap kurmak kullanarak telefonumda, Uygulamayı yüklediğinizde, uygulama artık çalışmıyor (Bu kütüphane benim kodundan BigNumber sözdizimlerini kaldırarak neden olduğunu işaretli). Üstelik, uygulamadaki Açısallık sadece çöker ve örneğin {{variableName}} gösterir ve hiçbir şey çalışmıyor.

Bulut ortamında geliştirdiğim için, uygulamayı bir uygulamada Safari Geliştirici Hata Ayıklama Konsolu'nu kullanarak (telefonumu USB ile bağlayarak ve ardından da Geliştirici araçlarını Safari'de etkinleştirerek) hata ayıklamayı denedim.

Ancak hiçbir hata biri hariç bulundu:

file not found: "path/to/ionic/lib/js/angular.min.js.map" 404 

Ama this is not the cause of the problem.

Neler oluyor? Bu javascript kütüphanesini cihazımda nasıl kullanabilirim?

+0

Evet, ([ '.map' dosyaları alakasız olan] http://stackoverflow.com/questions/21719562/javascript-map-files-javascript-source-maps). BigNumber kitaplığını kendi başına test etmeyi denediniz mi yoksa Cordova olmadan standart bir HTML sitesinde mi denediniz? Çünkü Cordova'nın onunla uyumsuzluğunun nedenini düşünemiyorum. – Huey

+0

@Huey Bunu onayladığınız için teşekkür ederiz. Tarayıcıda (404) test edildiğinde cordova.js dosyasına sahip olmayan ancak yalnızca cihaza dağıtıldığında bu İyonik uygulamada kütüphaneyi test ettim; Yani bir ölçüde kendi başına test ettiğimizi söyleyebiliriz. – JohnAndrews

+0

y için yeni BigNumber kullanın, tamam –

cevap

0

çözüm Bulunan çalışır. Ayrıca, bir javascript kütüphanesinin cihazınızda çalışmıyor olduğunu, ancak tarayıcınızda olduğunu düşünüyorsanız, bu cevap size yardımcı olabilir.

Sorun, paketi yüklemek için npm install'u çalıştırdığımda .git bağımlılıklarını düzgün şekilde güncellemediğini ortaya çıkardı. Ne oldu? Uygulamamı Github ve Phonegap Build aracılığıyla her paketlediğimde, BigNumber klasörünün hesaba katılmamasıydı. Yani temel olarak, uygulamada bignumber.js dosya mevcut değildi ve bu yüzden neden çalışmadı.

Tüm dosyaları BigNumber klasöründen yeni bir özel klasöre kopyalayarak çözdüm.

İlgili bir soru buradadır: Git not pushing all files and folders

0

@JohnAndrews,

Bu kodun ne ölçüde ise, deviceready dinleyici eksik. Cordova/phonegap üzerinde, deviceready etkinliğini alana kadar genellikle bir şeyler yapamazsınız. Yani, bu düşünebildiğim tek şey, bir function onDeviceReady() {} ekleyebilir ve sorununun çözülüp çözülmediğine bakar mısınız?

Elbette, bu olaydan sonra işlemlerinizi gerçekleştirdiğinizden emin olun.

+0

Ben bir telefongap eklentisi, ancak bağımsız bir JS kütüphanesi olmadığı için bunu çözüp çözemeyeceğinden şüphe duyuyorum. Tekrar deneyeceğim ve geri döneceğim. – JohnAndrews

+0

Sorununuzu çözeceğinden şüpheliyim, ama denemeye değer. – JesseMonroy650

1

Sadece kodunuzu test ettik ve işe yaramadı çünkü y değişkenini oluşturduğunuzda yeni kelimeyi kullanmıyorsunuz.

Bu

ben kullandım koddur ve

x = new BigNumber(123.4567) 
y = new BigNumber('123456.7e-3') 
z = new BigNumber(x) 
alert(x.equals(y) && y.equals(z) && x.equals(z));// I get true 
+0

Telefonda da çalıştı? – JohnAndrews

+0

Evet, iOS 8.1.3 ile bir iPhone 5'te test ettim. – jcesarmobile