knockout.js通过ko.computed语句中的选定值使用ko.observable

时间:2012-07-14 04:47:52

标签: knockout.js

我试图通过一些困难实现以下淘汰赛:

  1. 绑定一个选择表单元素......这可以正常工作
  2. 通过ko.observable显示所选选项......这有效
  3. 在ko.computed变量中使用#2中的ko.observable ......我无法弄清楚这一点。
  4. 到目前为止,我的尝试是Fiddle。任何想法?

1 个答案:

答案 0 :(得分:1)

立即评估计算的可观察量。当您在示例中的对象文字中创建viewModel变量时,它无法在您的计算可观察对象中使用。

几个选择。写得像:

var viewModel = {
    optionValues: [10, 20, 30],
    selectedOptionValue: ko.observable()
};

viewModel.multipledValue = ko.computed(function(){
    return this.selectedOptionValue() * 3;
}, viewModel);

ko.applyBindings(viewModel);​

var ViewModel = function() {
   this.optionValues = [10, 20, 30];
   this.selectedOptionValue = ko.observable();
   this.multipledValue = ko.computed(function(){
        return this.selectedOptionValue() * 3;
   }, this);

};

ko.applyBindings(new ViewModel());

此外,selectedOptionValue是一个可观察的,所以你可以通过将它作为一个没有参数的函数来读取它的值:this.selectedOptionValue()