我按照msdn上的说明构建了示例Apache Cordova,但是当它运行时,我没有得到输出的响应。输出类似于以下图像:
但无法在列表中添加/删除条目。
我查了一下,发现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
为了找到样本不起作用的原因以及为什么我没有得到正确的结果,我尝试调试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文字。
为什么在加载页面时没有运行此功能?
经过一些尝试和错误后,我发现我在JS控制台上收到了这些错误:
http://localhost:4400/scripts/index.js
从第一个错误中可以看出缺少somefile,但是如何找到丢失的文件?
答案 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键。