Knockout.js在一个ViewModel中绑定多个ObservableArrays的最佳实践

时间:2014-07-22 21:00:41

标签: javascript mvvm knockout.js

我是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习惯,并希望使用这些新技术重建旧系统,因此任何方向都会很棒。

1 个答案:

答案 0 :(得分:1)

实际上你正在寻找的东西现在在knockoutjs版本3.2.0中被称为Component。要理解这一点,你可以看到史蒂夫安德森的演讲,他是knockoutjs的创始人。

Architecting large Single Page Applications with Knockout.js

本演示文稿告诉我们要创建一个基于两件事的组件。

  1. 视图模型
  2. 模板
  3. 然后有两种方法可以使用它。

    1.HTML标记方式。示例<name-editor></name-editor>
    2使用组件绑定<div data-bind="component: 'name-editor'"></div>

    要记住的一件事是组件将完全独立,您可以根据需要在页面上调用任意数量的组件实例,并且每个组件都将独立工作。

    以下两篇教程将引导您走上正确的道路。

    Knockout.js 3.2 Preview : Components

    Dipping your feet into KnockoutJS Components

相关问题