ie10和11无法更新敲除中的可见绑定

时间:2014-08-14 10:28:53

标签: javascript knockout.js

我在ko中有以下可见绑定:

<div data-bind="visible: !hasConnection()" style="display: none;">
    <p>
        You have no connections created yet!
        <a href="#" data-bind="click: getAvailableConnections">Create one now?</a>
    </p>
</div>

用于此绑定的VM的各个部分是:

existingConnectionsListViewModel.connections = mapping.fromJS([]);
existingConnectionsListViewModel.hasConnection = ko.computed(function () {
    return existingConnectionsListViewModel.connections().length > 0;
});

当连接数组更改可见绑定时(在我的视图中有更多这样的可见绑定)适用于所有浏览器,包括ie8和9

问题:

在使用mapping.fromJS([]创建的10和11 observableArray中,如果控制台窗口关闭则不会更新


进一步调查:

如果控制台窗口关闭,我创建一个连接,使existingConnectionsListViewModel.connections()。length为1

之后我可以看到数组尚未更新:

enter image description here

如果我刷新页面或打开dev工具栏打开整个过程,那么数组将具有正确数量的项目。

  • 我的代码中没有console.log个陈述。
  • 用单引号包装可见绑定对问题没有影响
  • 整个模块处于严格模式
  • doctype是:XHTML 1.0 Transitional

1 个答案:

答案 0 :(得分:1)

当控制台窗口关闭时,部分代码无法解决问题时,除了代码中没有console.log语句外,还应检查另一个重要事项。

这就是ajax缓存。 IE因缓存ajax结果而臭名昭着,如果您的响应被缓存,那么您的observable将不会收到新数据以通知您的可见绑定。

确保您已启用cache: false作为您使用的任何ajax工具的全局设置。

用于jQ或放大使用:

$.ajaxSetup({
    cache: false
});