如何停止Knockout 3.2库加载两次

时间:2015-04-24 17:49:51

标签: javascript jquery knockout.js internet-explorer-8

我遇到了绑定表达式的问题,例如

<div data-bind="text: $data.Property"></div>

- 其中Property是一个可观察的 - 导致挖掘的可观察函数的实际文本显示而不是值Property应该表示的值。这是在In IE8, KnockoutJS 3.2 displaying actual observable function rather than the observable's value处理的。

该问题的原因是正在加载重复的淘汰库文件。 “更新:”部分和链接的SO问题的答案包括一些细节。

我现在需要知道如何防止敲除库被加载两次。 强调已加载而不仅仅是执行。到目前为止,我还没有找到任何可以解决此问题的内容。

RequireJS:由网站使用,但不是由调查页面使用。

SignalR:由页面使用。我对SignalR有点不熟悉,所以我不能说这会导致多次加载的可能性。

Ajax:也可以使用,但它用于接收JSON数据。

只有1个明确的引用淘汰库。

查看网络选项卡,第一个文件是从IE的speculative download功能加载的。第二个文件来自主解析器。第一个文件已完全下载,然后第二个文件已完全下载。

我无法弄清楚的是一种保留方式:

  • Lookahead Downloader首次下载文件
  • 第二次下载文件的主解析器
  • 第二次执行文件而不更改库文件中的代码。

此时,上述解决方案之一是可以接受的。任何人都可以提供见解,建议或知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

我终于搞清楚了。问题是脚本在页面中列出的顺序。 ASP.NET MVC 5支持可渲染的命名部分。在这种情况下scripts

布局 -

@RenderSection("scripts", required: false)

观点/部分观点 -

@section scripts {
    // script includes ...
}

在我的情况下,部分视图不包含scripts部分中的脚本,导致它们被预分析器和主解析器解析/下载。

以正确的顺序将所有脚本添加到scripts部分可以解决此问题。订单已由脚本的依赖项决定。