我从网站下载了一个模板:
http://www.mosaicpro.biz/item/coral-app-website-startup-kit-18.html
我正在尝试将其整合到Durandal中:
当我将html内容保留在文件中时:Durandal-> index.cshtml,一切都很完美。但是当我将div内容移动到shell.html时,所有内容都显示为空白,屏幕上没有任何内容。
我可以看到shell.js触发的激活方法,并且控制台中没有错误。此外,激活中没有隐藏任何内容的代码。
有没有人遇到任何与durandal有关的问题?
答案 0 :(得分:0)
这里没有足够的信息来完全回答这个问题。确保包含您尝试执行的代码示例(如果可能,请简化)。 因此,我对您的布局的假设是您在index.cshtml文件(主SPA页面)中有特定代码,并且您希望将其移动到shell(页面的主视图布局)中。 由于您说整个页面都是空白的,我猜您可能已经移动了加载应用程序的脚本标记。确保你有
<script data-main="MyMainSPAPagePath/main" src="Scripts/require.js"></script>
在.cshtml(home)页面中,并确保数据主路径指向主应用程序(后者将加载shell)。主模块(main.js)将应用程序的根视图设置为shell,它应包含shell视图和shell viewmodel。像这样的代码应该是主要的:
app.start().then(function () {
app.setRoot('viewmodels/shell');
})
你的shell可以包含导航,或者包含你的任何东西。但页面内容(其他模块)需要加载位置。因此,请确保在shell中,您有类似以下标记的内容,这将是加载内容的位置:
<section id="content" data-bind="router: {}">Loading...</section>
在shell中,您需要定义路由以加载适当的模块。匹配的路由将显示在该section标签内(也可以是div,无关紧要,它的语义)。
查看Durandal的入门应用作为参考:http://durandaljs.com/get-started.html
如果您按照入门指南进行操作,那么执行您要执行的操作应该非常简单。
需要考虑的其他一些事项;
希望这会有所帮助。检查durandal链接,因为它听起来应该是一个简单的修复,你可能没有定义或加载正确的顺序。
答案 1 :(得分:0)
我的代码如下 - &gt;的index.html
<html>
<div>some div content from template<div>
<script data-main="MyMainSPAPagePath/main" src="Scripts/require.js"></script>
<script>some app specific scripts</script>
</html>
但是当我将div移动到shell.html时,即只删除div部分
index.html-&GT;
<html>
<script data-main="MyMainSPAPagePath/main" src="Scripts/require.js"></script>
<script>some app specific scripts</script>
</html>
shell.html-&GT;
<div>some div content from template<div>
页面变为空白。
我可以看到shell激活的激活方法,所有路由都已正确配置。