0

我有两个ListViews(在不同的视图中)。这些视图绑定到单独的视图模型,但ListViews包含相同的实体类型。这两个视图都允许用户选择一个项目并导航到它的详细信息/编辑视图。

我需要做什么才能在两个列表视图之间共享这个详细视图?

这是我尝试过的:

将所选项目分配给详细视图的视图模型中的属性

这最初似乎有效,但实际上破坏了 Kendo MVVM。由于该项目位于列表视图的视图模型中,因此将其分配给另一个视图模型中的属性会导致问题。

在每个视图的显示事件中刷新数据

虽然这几乎可行,但它有几个问题。1) 一直获取新数据可能很慢。2) 在详细视图中保存更改并导航回列表视图时,保存是异步的,因此无法保证这些更改在调用 ListView 数据之前已经持久化。这也否定了 MVVM 和 observables 的好处之一。

跨视图共享视图模型

我见过的具有列表和详细视图的示例,两个视图共享一个具有selectedItem属性的视图模型。这在我的特定情况下是不可能的,因为我有两个导航到同一个详细视图的列表视图 - 更不用说我更喜欢为每个视图有一个单独的视图模型,这样视图模型就不会变得很大混乱。我应该让所有视图共享一个视图模型吗?

我错过了什么?

4

1 回答 1

0

也许您可以使用toJSON()方法将 observable 模型提取为普通对象模型,然后通过再次包装它来创建一个新的 observable 模型。这应该清除现有绑定并避免您在第一种方法中发现的冲突。

var model = kendo.observable( otherModel.toJSON() );
于 2013-05-31T01:51:37.150 回答