我在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
之后我可以看到数组尚未更新:
如果我刷新页面或打开dev工具栏打开整个过程,那么数组将具有正确数量的项目。
console.log
个陈述。答案 0 :(得分:1)
当控制台窗口关闭时,部分代码无法解决问题时,除了代码中没有console.log语句外,还应检查另一个重要事项。
这就是ajax缓存。 IE因缓存ajax结果而臭名昭着,如果您的响应被缓存,那么您的observable将不会收到新数据以通知您的可见绑定。
确保您已启用cache: false
作为您使用的任何ajax工具的全局设置。
用于jQ或放大使用:
$.ajaxSetup({
cache: false
});