如何让一个依赖使用另一个?

时间:2011-06-16 06:40:56

标签: knockout.js

我的视图模型中有一个属性用于select元素。绑定到此select的值是一个选定的产品。

现在我想要第三个属性在所选产品上使用字段,但我该怎么做?

我试过这样的事,没有运气:

viewModel = {
    startDateAndTime: ko.observable(new Date()), 
    selectedProduct : products[0],
    endDateAndTime : ko.observable(new Date(this.startDateAndTime).add({minutes: this.selectedProduct.duration})) 
    //the rest goes here

前两个属性工作正常,但第三个属性不起作用。

1 个答案:

答案 0 :(得分:1)

您将使用相关的可观察对象>

viewModel = {
            startDateAndTime: ko.observable(new Date()), 
            selectedProduct : products[0]
}


viewModel.endDateAndTime = ko.dependentObservable(function () {

return new Date(this.startDateAndTime).add({minutes: this.selectedProduct.duration}));

}, viewModel);

需要注意的重要一点是,只有在您已经声明viewModel之后才能添加相关的可观察对象(例如,我们在endDataAndTime声明之外宣布viewModel以上)。史蒂夫(knockoutjs的作者)writes在“管理这个”标题下的广泛原因。