Visual Studio上的Apache Cordova示例不起作用

时间:2015-06-16 14:58:32

标签: angularjs cordova visual-studio-cordova

我按照msdn上的说明构建了示例Apache Cordova,但是当它运行时,我没有得到输出的响应。输出类似于以下图像:

enter image description here

但无法在列表中添加/删除条目。

我查了一下,发现index.html有以下几行:

java.lang.Exception: java.lang.NumberFormatException: For input string: "100"
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354)
Caused by: java.lang.NumberFormatException: For input string: "100"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at com.hadoop.CFMapper.map(CFMapper.java:29)
    at com.hadoop.CFMapper.map(CFMapper.java:1)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366)
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:223)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

但是无法将新项目添加到列表中?

此示例代码有什么问题导致用户界面无法正常工作?

该示例使用angular.js

编辑1:

为了找到样本不起作用的原因以及为什么我没有得到正确的结果,我尝试调试javascrip代码。根据我的理解,当代码的页面如下:

 <button class="templateLeft templateToggle" ng-class="{'checked': toDoItem.done, 'unchecked': !toDoItem.done}" ng-mousedown="toggleToDoDone(toDoItem)"></button>
  <button class="templateLeft templateRemove" ng-click="removeToDo(toDoItem)"></button>

调用index.js中的函数: index.js的来源如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="cordova.js"></script>
    <script src="scripts/platformOverrides.js"></script>
    <script src="scripts/frameworks/angular.min.js"></script>
    <script src="scripts/frameworks/angular-resource.min.js"></script>
    <title>AngularJSToDo</title>

    <!-- AngularJSToDo references -->
    <link href="css/index.css" rel="stylesheet" />
</head>
<body ng-app="xPlat">
    <section id="todoapp" ng-controller="ToDoCtrl">
        <header id="header">
            <div id="headerBand"></div>
            <input id="new-todo" placeholder="What needs to be done?" ng-text-change="addToDo()" ng-model="newToDoText" autofocus>
        </header>
        <section id="main">
            <div id="todo-list">
                <div class="templateWrapper" ng-repeat="toDoItem in todos">
                    <div class="templateContainer">
                        <input class="templateTitle" ng-class="{crossedOut: toDoItem.done}" type="text" ng-text-change="changeToDoText(toDoItem)" ng-model="toDoItem.text" />
                        <h3 class="templateAddress">{{toDoItem.address}}</h3>
                        <button class="templateLeft templateToggle" ng-class="{'checked': toDoItem.done, 'unchecked': !toDoItem.done}" ng-mousedown="toggleToDoDone(toDoItem)"></button>
                        <button class="templateLeft templateRemove" ng-click="removeToDo(toDoItem)"></button>
                    </div>
                    <div class="templateBorder"></div>
                </div>
            </div>
        </section>
    </section>

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

我在这一行写了一个断点:

(function() {
'use strict';
angular.module('xPlat', ['xPlat.services', 'xPlat.controllers', 'xPlat.directives']);
angular.module('xPlat.directives', []);
angular.module('xPlat.controllers', []);
angular.module('xPlat.services', ['ngResource']);
})();

并运行应用程序,但应用程序没有停止在线上(显然,index.js没有加载,如果加载,它没有运行)

要查看文件是否存在于正确的位置,我运行应用程序并在ripple模拟器中加载后,我将Web浏览器的URL更改为:

angular.module('xPlat', ['xPlat.services', 'xPlat.controllers', 'xPlat.directives']);

我可以在屏幕上看到index.js文字。

为什么在加载页面时没有运行此功能?

编辑2

经过一些尝试和错误后,我发现我在JS控制台上收到了这些错误:

 http://localhost:4400/scripts/index.js

从第一个错误中可以看出缺少somefile,但是如何找到丢失的文件?

2 个答案:

答案 0 :(得分:0)

我相信你还没有完成指导中的所有部分。

请继续关注,您将在第34节中提到的services.js中找到所需的功能;添加数据模型&#34;。数据模型和相关函数在那里定义。

答案 1 :(得分:0)

要在TODO列表中添加条目,只需点击“需要做什么?”,开始输入并完成后按Enter键。要删除条目,只需单击该条目,您将看到左侧的删除按钮,单击它并且项目已消失,并将项目标记为“完成”,只需单击左侧的复选框。

我刚刚使用Android Ripple Nexus(Galaxy)运行了该示例,它运行良好。您到达所附示例的初始页面的事实告诉我您很高兴。我也得到了涟漪404,但这并没有阻止样本运行(我必须调查该错误的原因)

最后,如果添加条目对您不起作用,请在解决方案资源管理器中双击www / scripts / controllers中的toDoCtrl.js文件,并在ToDoCtrl.prototype.addToDo函数内设置断点,按F5并尝试添加输入后,您应该在输入文本后立即点击断点并按Enter键。