淘汰赛.js - 多个"pages",切换模型?



难以理解如何在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

最新更新