无法理解如何在 Knockout 中最好地执行以下操作:
我正在将一个多页面服务器端应用程序移植到 Knockout,它在各个页面上执行许多不同的功能和数据,例如:
- 列出所有用户
- 查看用户页面
- 编辑用户页面
- 您的帐户设置
- 等等
这些不同的页面显示在每个页面的主要部分,带有共同的页眉、侧边栏和页脚。
所有页面(在页眉和侧边栏中)都有通用数据,我希望它的行为类似于“单页”应用程序(部分之间有动画等)
在等待您的反馈之前,我认为最好的方法是:
- 一个主模型,每个“页面”都有子模型
- 适用于 header、sidebar 等的常见 observables
- 指示“活动页面”和模板的可观察对象
例如:
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'
?