1

好的,所以我对 dojo 还很陌生,我正在尝试制作一个非常简单的示例移动应用程序。我正在使用 eclipse 运行代码,该代码使用 android 模拟器来安装/运行应用程序。我遇到的问题是,我不断收到“未定义require”或“未定义dojo”的未捕获引用错误,导致我的应用程序显示为纯文本,而不是像使用dojox.mobile 小部件的android 应用程序那样格式化.

这是我的代码:

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

<!-- DOJO -->

<script src="/assets/www/lib/dojo/dojo/dojo.js" data-dojo-config="isDebug: true, parseOnLoad:true">
</script>

<link rel="stylesheet" href="/assets/www/lib/dojo/dojox/mobile/themes/android/android.css" 
type="text/css" media="screen" title="no title" charset="utf-8">


<script type="text/javascript" charset="utf-8" src="/assets/www/cordova-1.6.0.js"></script>

<script>
require(["dojo"], function(dojo) {
    dojo.require("dojox/mobile")
    dojo.require("dojox/mobile/parser")
});
</script>
</head>

<!-- END DOJO -->



<body>
<!-- ACCIDENT TOOLKIT PAGE -->
<div data-dojo-type="dojox.mobile.View" id="accHelp" selected="true">
    <h1 data-dojo-type="dojox.mobile.Heading">Accident</h1>
    <div class="text">If you are in an accident, you should first move to a safe 
    location. Below are some additional actions you can take:</div>
    <ul data-dojo-type="dojox.mobile.RoundRectList">
        <li data-dojo-type="dojox.mobile.ListItem" 
            onclick="window.location='geo:0,0?q=police';">Call the Police</li>
        <li data-dojo-type="dojox.mobile.ListItem"
            onclick="window.location='geo:0,0?q=towing';">Call for a Tow Truck</li>
        <li data-dojo-type="dojox.mobile.ListItem" moveTo="accInfo" transition="slide"
            onClick="itemClicked();">Exchange Driver Info</li>
        <li data-dojo-type="dojox.mobile.ListItem" moveTo="accInfo" transition="slide"
            onClick="itemClicked();">Record Accident Location</li>
        <li data-dojo-type="dojox.mobile.ListItem" moveTo="accInfo" transition="slide"
            onClick="itemClicked();">Take Photos of Accident</li>
    </ul>
</div>
<!-- EXCHANGE DRIVER INFO PAGE -->
<div data-dojo-type="dojox.mobile.View" id="accInfo">
    <h1 data-dojo-type="dojox.mobile.Heading" back="Accident" moveTo="accHelp"
        onClick="console.log('Going back');">Driver</h1>
    <h2 data-dojo-type="dojox.mobile.RoundRectCategory">Other Driver Info</h2>
</div>

<script>
function itemClicked() {
  console.log("itemClicked()");
}
</script>
</body>
</html>

代码本身有什么问题吗?特别是在我使用脚本 scr... 指向 dojo.js 以及我使用 require 来调用 dojo.mobile 函数的地方。我的印象是,只要 src 指向包树中的正确位置,我将文件复制到哪里并不重要。

我曾尝试使用 Google CDN 调用 dojo.js,但是当我这样做时模拟器会抛出错误,可能是因为它没有使用 Internet 连接?

任何帮助都会很棒!

4

2 回答 2

0

尝试从本地 URL 中删除 /assets/www/

于 2012-04-19T17:25:21.447 回答
0

您的 require 语句如下所示:

require(["dojo"], function(dojo) {
    dojo.require("dojox/mobile")
    dojo.require("dojox/mobile/parser")
});

它应该看起来像这样:

require([
    "dojo/mobile",
    "dojo/mobile/parser"
],
function(mobile, parser) {
    // your code here;
});
于 2012-11-21T16:28:56.553 回答