Javascript 构建多视图(多页)Knockout.js应用程序

Javascript 构建多视图(多页)Knockout.js应用程序,javascript,knockout.js,knockout-2.0,Javascript,Knockout.js,Knockout 2.0,我已经在Knockout.js上工作了几周,现在正在做示例和其他教程,但我仍在试图弄清楚如何构建我正在开发的应用程序的所有内容。这是一个简单的学校后台应用程序,保存所有班级、年级、教师、出勤率和学生的列表。它有多个页面: 所有类的列表(您可以在其中添加/编辑/删除类) 每个班级都有一个学生列表(您可以在其中添加/编辑/删除学生) 每个学生都有他/她的出勤率和成绩列表 教师网页 学校科目页 和其他人 如何构建此应用程序?我已经在“类”页面上创建了一个类模型: function Class(da

我已经在Knockout.js上工作了几周,现在正在做示例和其他教程,但我仍在试图弄清楚如何构建我正在开发的应用程序的所有内容。这是一个简单的学校后台应用程序,保存所有班级、年级、教师、出勤率和学生的列表。它有多个页面:

  • 所有类的列表(您可以在其中添加/编辑/删除类)
  • 每个班级都有一个学生列表(您可以在其中添加/编辑/删除学生)
  • 每个学生都有他/她的出勤率和成绩列表
  • 教师网页
  • 学校科目页
  • 和其他人
如何构建此应用程序?我已经在“类”页面上创建了一个类模型:

function Class(data) {
  var self = this;

  self.id = data.id;
  self.name = ko.observable(data.name);
  self.students = data.students;
  self.attendance = data.attendance;
}
。。。以及加载初始内容(类列表)的类ViewModel。它还包含一个用于添加、编辑和删除类的函数

function ClassViewModel() {
  var self = this;

  self.classes = ko.observableArray(ko.utils.arrayMap(classArr, function(eachClass) {
    return new Class(eachClass);
  }));

  [...]
}

那么,我是否继续为应用程序的每个主要部分(学生、教师、科目等)创建单独的模型和视图模型,并将它们分别绑定到各自的页面上?如果我走这条路,我如何在ViewModels之间共享函数而不向每个ViewModels添加相同的函数?

我为KO创建了一个名为Knockout.BindingConventions的配置库约定

使用nuget安装

Install-Package Knockout.BindingConventions
Install-Package Knockout.Bootstrap
该库的一个特性是其模板约定,基本上它理解名为ClassViewModel的viewmodel应该连接到名为ClassView的模板(视图)

我还创建了一个利用上述库的模板引导程序

使用nuget安装

Install-Package Knockout.BindingConventions
Install-Package Knockout.Bootstrap
结合这两个库,您可以在服务器上构建这样的应用程序(以ClassViewModel为例)

这里是完全工作的MVC4演示