Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cordova 使用durandal创建android应用程序_Cordova_Durandal_Android_Mimosa - Fatal编程技术网

Cordova 使用durandal创建android应用程序

Cordova 使用durandal创建android应用程序,cordova,durandal,android,mimosa,Cordova,Durandal,Android,Mimosa,我昨天刚从durandal开始尝试android应用程序开发。这也是我第一次尝试应用程序开发 我正在使用含羞草,但它并没有达到预期的效果 覆盖的台阶 从durandal下载初学者工具包 执行mimosa build-mo并获得main-build.js 已将所有文件从资源复制到phonegap示例项目 在phonegap项目的index.html中包含main-build.js的路径 我必须在index.html中进行哪些更改 现在看起来像 <html> <head

我昨天刚从durandal开始尝试android应用程序开发。这也是我第一次尝试应用程序开发

我正在使用含羞草,但它并没有达到预期的效果

覆盖的台阶

  • 从durandal下载初学者工具包
  • 执行
    mimosa build-mo
    并获得main-build.js
  • 已将所有文件从资源复制到phonegap示例项目
  • 在phonegap项目的index.html中包含main-build.js的路径
我必须在index.html中进行哪些更改

现在看起来像

<html>
    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
        <link rel="stylesheet" type="text/css" href="css/index.css" />
        <link rel="stylesheet" type="text/css" href="css/styles.css" />
        <title>Hello World</title>
    </head>
    <body>
        <div class="app">
            <h1>PhoneGap</h1>
            <div id="deviceready" class="blink">
                <p class="event listening">Connecting to Device</p>
                <p class="event received">Device is Ready</p>
            </div>
        </div>
        <script type="text/javascript" src="phonegap.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript" src="js/main-built.js"></script>
        <script type="text/javascript">
            app.initialize();
        </script>
    </body>
</html>

你好,世界
音差
连接到设备

设备已准备就绪

app.initialize();

要使durandal的入门套件成为android应用程序,我需要做哪些更改?

我已经用durandal/Phonegap为android和ios做了一些应用程序,我自己也走了同样的路,这并不好笑,但我离题了。 index.html中的第一个app.initialize()是不允许的。这里绝对不是这样。你想做的是让你的索引看起来有多像durandal喜欢它-清空所有javascript!。例外情况是phonegap.js,您需要在index.html中直接引用它。我还没有完全成功地解决异步加载和初始化cordova的问题,但还有一些资源

所有的魔法都会在main.js中发生,很明显,在使用含羞草或weyland构建之前,您会这样做。见下文

define(['durandal/system', 'durandal/app', 'durandal/viewLocator'],

function (system, app, viewLocator) {

    document.addEventListener('deviceready', function(){ setTimeout(onDeviceReady, 500); }, false);

    function onDeviceReady(){
    app.title = 'My App';

    app.configurePlugins({
        router: true,
        dialog: true,
        widget: true
    });


    app.start().then(function () {
        //Replace 'viewmodels' in the moduleId with 'views' to locate the view.
        //Look for partial views in a 'views' folder in the root.
        viewLocator.useConvention();

        app.setRoot('viewmodels/shell', 'entrance');
    });
   };
});
在调用函数之前,我将超时时间设置为1/2秒,以等待cordova处理它的事务,否则我会遇到一些不一致的问题。 将main.js重写为AMD模块,并将其注入shell。然后,您可以在shell.js中的activate或compositionComplete中调用app.initialize

明白了#1

在安卓平台上工作时,你可能会无意中遇到另一个问题,这让我好几天都差点把头发扯下来。当您在视图中创建链接时,您可能会尝试这样做
,Android不喜欢这样,它只是在logcat中发出大量的胡言乱语。您最好这样做
去某个地方
,然后在您的模型上定义一个使用router.navigate的函数


我希望这对你有所帮助。

我已经用Durandal/Phonegap为android和ios开发了一些应用程序,我自己也走了同样的路,这并不好笑,但我离题了。 index.html中的第一个app.initialize()是不允许的。这里绝对不是这样。你想做的是让你的索引看起来有多像durandal喜欢它-清空所有javascript!。例外情况是phonegap.js,您需要在index.html中直接引用它。我还没有完全成功地解决异步加载和初始化cordova的问题,但还有一些资源

所有的魔法都会在main.js中发生,很明显,在使用含羞草或weyland构建之前,您会这样做。见下文

define(['durandal/system', 'durandal/app', 'durandal/viewLocator'],

function (system, app, viewLocator) {

    document.addEventListener('deviceready', function(){ setTimeout(onDeviceReady, 500); }, false);

    function onDeviceReady(){
    app.title = 'My App';

    app.configurePlugins({
        router: true,
        dialog: true,
        widget: true
    });


    app.start().then(function () {
        //Replace 'viewmodels' in the moduleId with 'views' to locate the view.
        //Look for partial views in a 'views' folder in the root.
        viewLocator.useConvention();

        app.setRoot('viewmodels/shell', 'entrance');
    });
   };
});
在调用函数之前,我将超时时间设置为1/2秒,以等待cordova处理它的事务,否则我会遇到一些不一致的问题。 将main.js重写为AMD模块,并将其注入shell。然后,您可以在shell.js中的activate或compositionComplete中调用app.initialize

明白了#1

在安卓平台上工作时,你可能会无意中遇到另一个问题,这让我好几天都差点把头发扯下来。当您在视图中创建链接时,您可能会尝试这样做
,Android不喜欢这样,它只是在logcat中发出大量的胡言乱语。您最好这样做
去某个地方
,然后在您的模型上定义一个使用router.navigate的函数


我希望这对您有所帮助。

刚刚解决了TTS问题,如下所示:

app.speakText = function (textToSpeak) {
    if (window.cordova) {
        var deferred = $.Deferred();
        window.TTS.speak({
            text: textToSpeak,
            locale: 'en-US',
            rate: 0.75
        }, function () {
            deferred.resolve(true);
        }, function (reason) {
        });
        return deferred.promise();
    }
};

刚刚解决了TTS问题,如下所示:

app.speakText = function (textToSpeak) {
    if (window.cordova) {
        var deferred = $.Deferred();
        window.TTS.speak({
            text: textToSpeak,
            locale: 'en-US',
            rate: 0.75
        }, function () {
            deferred.resolve(true);
        }, function (reason) {
        });
        return deferred.promise();
    }
};

好问题。。关于这方面的Durandaljs文档非常少:(想用Weyland来构建让这只小狗也在Phonegap上运行!这方面有什么进展吗?我从Phonegap样本中复制了这个样本,并将这个文件复制到Phonegap样本中,包括了我复制的所有js,然后我在durandal站点中遵循步骤,样本应用程序开始工作。但是遇到了使用ajax调用的场景。谢谢,我会检查这个问题。)ut soonGreat问题..关于这方面的Durandaljs文档非常少:(想用Weyland来构建让这只小狗也在Phonegap上运行!这方面有什么进展吗?我从Phonegap样本中复制了这个样本,并将这个文件复制到Phonegap样本中,包括了我复制的所有js,然后我在durandal站点中遵循步骤,样本应用程序开始工作。但是遇到了使用ajax调用的场景。谢谢,我会检查这个问题。)很快