我是Knockout.js的新手,但我已经成功地将几个与简单的WebAPI服务交互的CRUD模板放在一起。现在我想转向更复杂的结构,我已经在一个相当常见的情况下绊倒了:单个html表单上的多个下拉列表。
我知道我可以构建一个像这样的ViewModel:
function myViewModel() {
var self = this;
self.selectedCustomer = ko.observable();
self.customers = ko.observableArray([]);
self.selectedState = ko.observable();
self.states = ko.observableArray([]);
self.selectedProduct = ko.observable();
self.products = ko.observableArray([]);
}
然后我将每个选择列表绑定到适当的属性。虽然这应该有效,但我觉得有更好的方法来处理它。我已经考虑过将每个列表分成它自己的ViewModel,但这看起来有些过分。我希望尽早获得良好的MVVM习惯,并希望使用这些新技术重建旧系统,因此任何方向都会很棒。
答案 0 :(得分:1)
实际上你正在寻找的东西现在在knockoutjs版本3.2.0中被称为Component
。要理解这一点,你可以看到史蒂夫安德森的演讲,他是knockoutjs的创始人。
Architecting large Single Page Applications with Knockout.js
本演示文稿告诉我们要创建一个基于两件事的组件。
然后有两种方法可以使用它。
1.HTML标记方式。示例<name-editor></name-editor>
2使用组件绑定<div data-bind="component: 'name-editor'"></div>
要记住的一件事是组件将完全独立,您可以根据需要在页面上调用任意数量的组件实例,并且每个组件都将独立工作。
以下两篇教程将引导您走上正确的道路。