【发布时间】:2013-10-20 19:18:24
【问题描述】:
页面绑定到页面视图模型,在页面内部我加载了一个绑定到它自己的视图模型的客户端视图。我尝试将事物分开,因此页面视图模型只知道客户端视图的名称,并且不直接与客户端视图模型通信。所以页面视图看起来像:
<div>
<div data-bind="compose:client"></div> <!-- client is an observable of type string -->
</div>
<!-- some more bindings -->
但是我需要根据客户端视图模型的状态更新页面视图模型上的一些属性,因为这些属性绑定到页面视图(而不是客户端视图)。最好的方法是什么?我应该在客户端视图模型中使用app.triger 并在页面视图模型中收听吗?最好只绑定到客户端视图模型(页面视图模型的client 属性将是一个对象或函数而不是字符串)并直接从页面视图模型通过公共接口与当前客户端视图模型通信以获取客户端视图的状态在页面视图模型上建模并计算一些属性?那里有哪些最佳做法?
另外我会尽量避免使用preserveContext:true,因为这似乎是最不干净的选项。
如果这很重要,我不会使用路由,因为路由在该页面上没有用处。我正在从页面视图模型手动更改client 属性。
我正在使用 Durandal 2.0。
【问题讨论】:
标签: javascript mvvm knockout.js durandal