Javascript库无法在设备

时间:2015-06-30 08:39:59

标签: javascript ios angularjs cordova phonegap-build

我正在使用BigNumber library of MikeMcl来处理我对大数字的需求。我在Ionic/Angular project中使用此库。

正如Github所述,安装和使用此库的方法是在html中包含脚本tage:

<!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>

现在在我的代码中,我可以使用这个库作为例如:

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

我对此进行了测试,它可以在Chrome和Safari上运行(甚至在设备上)。

但是当我在手机上安装应用程序使用Phonegap Build 时,该应用程序不再起作用(我通过从我的代码中删除BigNumber语法来检查此库是原因)。此外,应用程序中的Angular只会崩溃并显示{{variableName}},但没有任何工作。

因为我是在云环境中开发的,所以我尝试使用Mac上的Safari Developer Debug Console来调试应用程序(通过将我的手机用USB连接到Mac然后在Safari中启用开发人员工具)。

但是,除了一个错误之外没有发现任何错误:

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

但是this is not the cause of the problem

发生了什么事?我怎样才能在我的设备上使用这个javascript库?

2 个答案:

答案 0 :(得分:1)

我刚刚测试了你的代码并且它不起作用,因为当你创建y变量时,你不使用new这个词。

这是我用过的代码,它可以运行

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

答案 1 :(得分:0)

@JohnAndrews,

如果这是您的代码范围,则缺少 deviceready 侦听器。在获得 deviceready 事件之前,您通常无法执行任何操作。所以,这是我唯一能想到的,你能添加一个function onDeviceReady() {},看看是否能解决你的问题?

哦,当然,请确保在此事件发生后运行您的操作。

相关问题