当html代码移动到shell.html时,div内容不显示

时间:2014-05-03 17:08:15

标签: durandal

我从网站下载了一个模板:

http://www.mosaicpro.biz/item/coral-app-website-startup-kit-18.html

我正在尝试将其整合到Durandal中:

当我将html内容保留在文件中时:Durandal-> index.cshtml,一切都很完美。但是当我将div内容移动到shell.html时,所有内容都显示为空白,屏幕上没有任何内容。

我可以看到shell.js触发的激活方法,并且控制台中没有错误。此外,激活中没有隐藏任何内容的代码。

有没有人遇到任何与durandal有关的问题?

2 个答案:

答案 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

如果您按照入门指南进行操作,那么执行您要执行的操作应该非常简单。

需要考虑的其他一些事项;

  • 在main.js文件中,确保启用了调试(system.debug(true);),因为可能存在由于未启用而未显示的错误。
  • 确保正确链接了视图和视图模型。如果您没有使用定位文件的约定,请确保定义它。
  • 在shell中尝试一些基本代码。如果你只在shell中添加基本文本的常规范围,那么它会显示出来吗?如果是这样,那么很可能是您下载的网站上的代码是唯一的(如果没有给出示例,则无法确定),在这种情况下,您可能需要修改某些路由或链接。

希望这会有所帮助。检查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激活的激活方法,所有路由都已正确配置。