延迟击倒for​​each绑定

时间:2014-08-06 21:35:05

标签: ajax knockout.js binding foreach delay

我遇到了带有过滤器,排序和分页的产品列表的问题。出于SEO原因,可以访问产品列表页面,并使用服务器端代码正确过滤和绑定。因此,搜索引擎可以从网站上的链接抓取它。但是,我还希望产品列表可以在客户端进行过滤,以提高速度和可用性。因此我使用knockout,但我不希望客户端绑定与服务器端绑定冲突。

页面的流程将是: 1.页面被点击,ASP.NET使用查询字符串参数绑定产品列表以设置过滤选项 2.从客户端浏览器调用AJAX以请求所有产品。 Knockout将过滤掉这些并将它们绑定到页面。 3.浏览器中进行的任何过滤更改都将由敲除管理,绑定的产品列表将更新

问题出在步骤#1和#2之间。从技术上讲,这是发生的事情: 1.服务器正确绑定产品列表,此处没有问题 2. Knockout由浏览器加载一个空数组产品(它还没有进行ajax调用),因此knockout控制foreach绑定并删除所有服务器绑定的产品。 3.非常短(但很明显)的时间之后,ajax调用成功响应并填充knockout可观察数组,并且产品再次被不必要地正确绑定(应该与服务器端绑定的结果相同)。

问题是,如何消除步骤#2中发生的产品消失?我的想法是有一个布尔值,它只允许敲除foreach绑定在它是真的时激活(在与过滤,排序或分页的手动交互之后,这意味着在页面加载时,只有服务器端绑定)发生了,淘汰赛管理了任何其他客户互动。这可能吗?

我的问题在这里有一个非常基本的JS小提琴: http://jsfiddle.net/ajbrun/hqpz3w6h/2/

目前使用映射插件来填充observable。我也尝试过自己的自定义绑定并使用beforeRemove事件,但我还没有找到解决方案。 ko.mapping.fromJS([]);

0 个答案:

没有答案