knockout.js - 跨相关视图广播数据

时间:2013-08-22 08:43:24

标签: data-binding knockout.js

我目前正在进行一项研究,研究一些JS MV *框架,并选择一个最适合团队需求的框架。淘汰赛是我正在学习的竞争者之一。

最重要的要求之一是将视图模型中的数据更改广播到使用此类数据的所有视图。例如,假设我们在页面上的数据网格中列出了客户端详细信息,单击数据网格中的任何行会弹出一个弹出对话框,用户可以在其中编辑所选行的值。当进行更改并且用户单击“保存”时,数据将在数据库中更新。但我们还想要的是,更改将反映在本地ko.observablearray中,然后用于使用此“客户”集合的任何其他视图,以使用新数据刷新自身。换句话说,视图必须使用ko.observablearray中的数据刷新自己,而不是从数据库中获取新的列表。

我成功地做到了这一点 - 有一个.cshtml文件,其中包含数据网格和一个表单,用于在数据网格中创建新行。在这种情况下,网格中的数据正确刷新。但是当更改发生在另一个cshtml文件上时,我无法将这些更改传递到其他视图。这可以在淘汰赛中完成吗?如果是,请指出一个如何以及在何处完成的示例。

1 个答案:

答案 0 :(得分:0)

我会使用Event聚合器模式。我为SignalR做了一个

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy

安装usign nuget

Install-Package SignalR.EventAggregatorProxy

如果您没有使用SignalR,那么您可以从我的lib中提取相关部分,这里是演示

http://jsfiddle.net/jh8JV/