Cordova 使用durandal创建android应用程序
我昨天刚从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下载初学者工具包
- 执行
并获得main-build.jsmimosa build-mo
- 已将所有文件从资源复制到phonegap示例项目李>
- 在phonegap项目的index.html中包含main-build.js的路径
<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调用的场景。谢谢,我会检查这个问题。)很快