难以理解如何在Knockout中最好地执行以下操作:
我正在将一个多页面服务器端应用程序移植到Knockout,它在不同的页面上执行许多不同的功能和数据,例如:
- 列出所有用户
- 查看用户页面
- 编辑用户页面
- 您的帐户设置
- 等等
这些不同的页面显示在每个页面的主要部分,有一个通用的页眉、侧边栏和页脚。
所有页面上都有通用数据(在页眉和侧边栏中),我希望它表现得像一个"单页"应用程序(在各部分之间有动画等)
在等待您的反馈之前,我认为最好的方法是:
- 一个主模型,每个"页面"都有子模型
- 适用于标题、侧边栏等的常见可观察性
- 指示"活动页面"和模板的可观察项
例如:
var MainModel = {
listUsersModel: { ... },
userModel: { ... },
accountModel: { ... },
commonProperty: ko.observable('Blah'),
anotherCommonProperty: ko.observable('Blah'),
activeSection: ko.observable('listUsers')
}
虽然我认为这会起作用,但我对如何"切换页面"以及使用新的服务器端数据更新新页面的模型有点模糊。
这样做的最佳/唯一方法是:
MainModel.userModel.userId(123456)
// userModel above subscribes to userId changes, to get new server via ajax
MainModel.activeSection = 'viewUser'
下面是RNiemeyer的一个例子,它回答了我的需求:
https://github.com/rniemeyer/SamplePresentation/tree/master/js