Knockout JS和依赖的viewmodels

时间:2012-08-28 14:22:54

标签: knockout.js

我正在努力解决如何使用Knockout最好地表示我的数据。拥有一个包含子视图模型的主视图模型或只有一个主视图模型更好吗? 以下是数据表示方式的示例:

Company { CompanyID, Industry, Name, Address, Phone }

Employee { CompanyID, EmployeeID, Name, Address, Phone }

可以有很多公司,每家公司都可以拥有很多员工。我需要用户能够从下拉列表中选择公司,填写公司记录,然后显示员工记录列表。如果公司记录被更改,我只想将公司记录(通过jSON)发回服务器。如果员工记录发生变化,我只想将员工记录发送回服务器。

当然,在加载Employee记录之前,不能加载Company个记录。

1 个答案:

答案 0 :(得分:1)

尽量不要考虑“更好”......而是考虑一下您的View需要什么。使用它需要的模型为它构建一个viewmodel。如果您需要公司列表,选择公司,然后在一个视图中显示所有员工列表,那么您可以拥有一个公开此模型层次结构的视图模型。

或者您可以创建多个视图:1用于从列表中选择公司,1:用于显示公司详细信息,1:用于选择员工...您明白了。然后每个视图都有自己的viewmodel和该数据。

或者您可以使用子视图模型创建主视图模型。

我通常从1个View和1个ViewModel开始,只有在我看到ViewModel(或视图)变得越来越重的时候才会分成几个。