根据杜兰达尔中客户端视图模型的状态在页面视图模型中设置属性
Set property in page view model depending on state of client view model in Durandal
页面绑定到页面视图模型,在页面内部我加载绑定到它自己的视图模型的客户端视图。我尝试将事情分开,以便页面视图模型只知道客户端视图的名称,并且不直接与客户视图模型通信。因此,页面视图如下所示:
<div>
<div data-bind="compose:client"></div> <!-- client is an observable of type string -->
</div>
<!-- some more bindings -->
但是我需要根据客户端视图模型的状态更新页面视图模型上的某些属性,因为这些属性绑定到页面视图(而不是客户端视图(。最好的方法是什么?我应该在客户端视图模型中使用 app.triger
并在页面视图模型中侦听吗?最好只绑定到客户端视图模型(页面视图模型client
属性将是对象或函数而不是字符串(,并通过公共接口直接从页面视图模型与当前客户端视图模型通信,以获取客户端视图模型的状态并计算页面视图模型上的一些属性?那里有哪些最佳实践?
此外,我会尽量避免使用preserveContext:true
因为这似乎是最不干净的选项。
如果这很重要,我不使用路由,因为路由在该页面上没有用。我正在从页面视图模型中手动更改client
属性。
我在杜兰达尔 2.0 上。
Pub/sub 似乎是最好的方法,因为您已经指出视图模型应该分开。与其使用应用程序进行通信,不如考虑创建一个在客户端/页面之间共享的小模块
define(['durandal/events'],function(Events) {
var myObj = { ... };
Events.includeIn(myObj);
return myObj;
});
如果你后来决定想要一些更紧密的耦合,你也可以向myObj添加一些共享的可观察量。
相关文章:
- 如何在视图模型contet更新更新上调用Jquery函数
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 在MVVM视图模型中处理应用程序范围的元素
- 将c#视图模型转换为javascript模型时转义HTML标记
- 使用knockout.js将数组绑定到视图模型
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 聚合物:在不同的视图模型中多次使用元素
- 使用AMD时未定义淘汰组件视图模型
- 如何在Knockout.js中选中复选框时更新视图模型及其依赖项
- 无法将对象列表从视图模型设置为 javascript 变量
- 挖空视图模型函数仅影响最后一个实例
- 挖空.js嵌套视图模型不起作用
- 为什么我的视图模型不起作用
- 挖空、视图模型位于其他对象和数据绑定中
- 如何将经度/经度值绑定到挖空视图模型方法
- 挖空.js:等待视图模型实例化完成
- 在Knockout视图模型中调用jQuery插件是一种有效的模式
- KnockoutJS:如何避免在applyBindings上运行视图模型函数
- 使用knockoutjs操作视图模型
- Kendo UI自定义验证不适用于模板和视图模型